1 - シングルトン

1、ADO、コードの最初の

  

2.シングルトンとは何ですか?

  Singletonパターンは、システムがクラスの唯一のインスタンスであることを確実にすることである、唯一の自分の内にあるクラスは、外国オファーの新しいユニークな例を作ります

図3に示すように、シングルモードの実施例

  3民間の全オブジェクトストレージインスタンス民営化、民営化コンストラクタ関数民営クローニングは、開示された方法の例を提供します

  ①静的属性の民営化は、固有のインスタンスを格納するために使用されます

  民営化、民営クローニング方法の②工法

  ③、この例を提供するためのシステムのpublic staticメソッド

プライベート4、単一モード特性実施形態および方法、静的な理由

  プライベート:

    プロパティ:プロパティは、このユニークなクラスを介してシングルトンインスタンスを取得するように変更される可能性があります保存し、直接外部のクラス属性のプライベートコールオブジェクトインスタンスに防止することができます。

    方法:新しいクラスを指示するように構成された民営化を防止する方法は、自動的にクローン()メソッド、民営呼び出し__cloneを使用して、クローンオブジェクトを防止する、オブジェクトクラス、民営化のクローン方法を生成します

        cloneメソッドがアクセス可能ではない、それはクローンを作成することはできません

        その国民と、外部からアクセス可能なクラスを提供するための方法の最後に、一意のインスタンス

  静的:(参考https://zhidao.baidu.com/question/2206072272164938188.html

    (::クラスのメソッド名を名前:この方法は、クラスのみ二つの方法を呼び出し、(1)オブジェクト・クラスを作成し、方法(2)直接形式のクラスのメソッドを呼び出すクラス名のクラスの種類を呼び出します)

    民営化コンストラクタは、(1)のみ(2)を用いて、使用することができません。直接クラス名を使用してクラスタイプのために呼び出し、メソッドは、クラスは、それが開示された方法の例は静的である必要があります提供し、(静的)静的である必要があります

    静的メソッドは、カスタムクラスのインスタンス変数が静的である必要があり、非静的メンバ変数にアクセスすることはできません

図5に示すように、たとえばアプリケーション・シナリオ

  ①統計現在オンライン(ウェブサイトのカウンター):レコードにグローバルオブジェクトを持ちます

  ②プリンタ(デバイスマネージャ):2台のプリンタは、プリンタの出力がある場合にのみ、同一のファイルの出力

  ③データベース接続プール(リソース制御):一般的に使用されるシングルモードの実施形態では、データベース接続は、接続リソースデータベース、頻繁に作成され、破壊されないからです。システムのデータベース接続プール、メインで使用(データベース・ソフトウェア

    オープン保存または起因する効率の損失に効率のデータベースの接続損失を閉じると、まだ非常に高価であるため、シングルモードの実施例が大幅にこの損失を減らすことができます維持するために、

  ④アプリケーションログ(リソース共有):通常運転を共有する内容が連続してバックに書き込むために必要ですログインし、それは通常、シングルトンを使用しています

シングルトンの6、長所と短所

  長所:①メモリのオーバーヘッドを削減し、創造と破壊の特に頻繁インスタンス

             ②資源の過剰消費を避けます

  短所:①何の抽象化層は、拡大して、困難継承することはできません 

        ②「単一責任の原則」を違反した対外関係を無視して、クラスが内部関係についてのみ懸念しています

      ③対象を変更しません

      ④そのようなリソースを単一の例のように設計されたデータベース接続プールオブジェクトを保存するようにいくつかの否定的な問題、単一の定期的な虐待は、あまりにも多くのプログラムへの接続プール・オブジェクトを共有するためにつながる可能性があり、接続プールのオーバーフローが発生します。インスタンス化オブジェクトは、長期間使用しない場合

      システムは、ステータスオブジェクトの損失をもたらすであろう、ごみを収集することができるとみなされます

 

おすすめ

転載: www.cnblogs.com/lisongwei/p/10988745.html