C ++の問題仕上げノート(B)-------デザインパターン

遭遇した問題を要約し、インタビュー対象が発生することがあります。
1.何がデザインパターンは

2.何がシングルトンは

シングルトンのモードにおいて、何で怠惰なモードは、何である空腹男モードは、両方の違いは何ですか?

また、することができる方法、この種に加えて、クラスのインスタンスが1つだけ作成されることを保証する方法に関係なく、マルチスレッドの単独モードの場合4、生成物を禁止

たとえば5、C ++を使用してシングルモードの実施形態?


回答

1.何がデザインパターンは
デザインパターンは経験の伝統前者が発見された、要約フォームから問題のクラス一般的な溶液の代わりに定性的ルールを設計された、それが使用されるアルゴリズムに応じれないようにコピーすることができます。
ほんの数を記載する以下に制限レベルによる古典的なデザインパターンの23種類の合計。

2.シングルトンとは何ですか?
シングルトンは、定義により、単なる一例では、一般的なソフトウェアのデザインパターンです。コア構造が含まれている唯一の1が呼び出されるシングルトン特定のクラス。単一モードシステムの実施形態は、1つのインスタンスのみアプリケーションクラスモデルのクラスを保証します。すなわち、クラスは、オブジェクトのインスタンスを1つだけ持っています
特長のシングルトン:
1は一例に過ぎません。
2.グローバル・オブジェクト・ポインタ(内側のパブリック)へのアクセスを提供する、ポインタはすべてのモジュールで共有されます。
例3シングルモードでは、将来の複数のインスタンス(スケーラビリティ)を可能にします。

シングルトンのモードにおいて、怠惰なモードが何であるか、飢えた男のモードが何であるか、両方の違いは何ですか?
この場合に使用されるなど怠惰な定義によるちょっと面白いレイジーモード名は、オブジェクト、インスタンス化する時間を指し
シングルトンクラス定義が良くインスタンス化する際に、理由は飢え、飢えた男モード反します。
上記の定義から、レイジー・モードは、より多くの時間を消費し、空間モードは、飢えより多くを消費します。
だから、:
空腹男モードに適したより大きなアクセス、または複数のスレッドとき、長い走行時間、
訪問の数が少ないが、時間が時間の短い実行されている、あなたが怠惰なモードを使用することができます。

シングルトンモードの場合には4は、関係なく、マルチスレッドの、クラスのインスタンスが1つだけ作成されていることを確認する方法を、この種に加えて、禁止されたオブジェクトを生成することができる方法はありますか?

シングルトンのコンストラクタは、クラス(のプライベートメンバー設定の一般的なクラスのコンストラクタで新しいオブジェクトで禁止されている(または保護されたメンバー)の方法を。

また、抽象クラスが禁止インスタンス化することができます。
それはクラスに純粋仮想関数が追加され、それは= 0、次の文言を追加し、仮想、後で定義されていない機能を追加する機能の前にあります。

class Example
  {
       virtual int function1(int a)=0;
       …
  };

モードおよび単一ロッキング実施の形態でコードを飢えた後、それぞれ、遅延書き込みモードを使用してC ++コード?
民営除くシングルトンのコンストラクタは、だけでなく、グローバルコールインターフェースを保証します。
レイジーモード次のように:

class Singleton1
{
private:
     Singleton1(){}
     static Singleton1 *psig;
public:
     static Singleton1* GetInstance()
     {
          if(psig==nullptr)
          {
            psig=new Singleton1();
          }
               return psig;
      }
};

おすすめ

転載: blog.csdn.net/alexhu2010q/article/details/81876312