スプリングお気に入りのデザインモード(2)
7566 ワード
4.一輪モード
シングルループモードは、一例を作成するために使用されるモードです.接続プール、スレッドプール、デバイス設定オブジェクトなどの場合、複数のインスタンスを作成すると不要なリソースが消費され、プログラムに予期せぬ結果が生じる可能性があります.単一ループモードでは、インスタンスが1つだけ作成され、再使用されます.
シングルループモードを適用すると、2つのオブジェクトが存在しないことを意味します.これを実現するには、オブジェクトを作成するnewをコンストレイントし、作成した単一のオブジェクトを返す方法が必要です.したがって,必要な要因を考慮すると,以下の3つの要因を考慮しなければならない.
Singleton.java
package singletonPattern;
public class Singleton {
static Singleton singletonObject; // 정적 참조 변수
private Singleton() {}; // private 생성자
// 객체 반환 정적 메서드
public static Singleton getInstance() {
if (singletonObject = null) {
singletonObject = new Singleton();
}
return singletonObejct;
}
}
getInstance()静的メソッドでは、静的参照変数にオブジェクトが指定されていない場合にのみnewによってオブジェクトが作成され、静的参照変数に割り当てられます.次に、静的参照変数に割り当てられた一意のオブジェクトの参照を返します.テストコードは次のとおりです.Client.java
package singletonPattern;
public Class Client {
public static void main(String[] args) {
// private 생성자이므로 new를 통해 인스턴스를 생성할 수 없다.
// Singleton s = new Singleton();
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
Singleton s3 = Singleton.getInstance();
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
s1 = null;
s2 = null;
s3 = null;
}
}
s1 = null; 実行前のTメモリスナップショットを表示します.4つの参照変数(singletonObject、s 1、s 2、s 3)が単一のオブジェクトを参照していることがわかります.これが単輪モードの力です.単一のオブジェクトの場合、最終的には共有オブジェクトとして使用されるため、属性を持たないのが慣例です.個々のオブジェクトに属性がある場合、ある参照変数によって変更された個々のオブジェクトの属性が別の参照変数に影響を与えるためです.読み取り専用のプロパティがあるだけで問題はありません.また、個々のオブジェクトから別の個々のオブジェクトへの参照もプロパティとして問題ありません.
上記のコードを実行すると、次の結果が得られます.
SingletonPattern.Singleton@263c8db9
SingletonPattern.Singleton@263c8db9
SingletonPattern.Singleton@263c8db9
オブジェクト参照変数自体がシステムです.out.参照オブジェクトをprintln出力で呼び出すtoString()メソッド.toString()メソッドを上書きしない場合は、オブジェクトの一意の値hashCode()が返され、呼び出すたびに同じ値が出力されることがわかります.これは、3つの参照変数s 1、s 2、s 3が同じオブジェクトを参照することを意味する.覚えた単輪パターンの特徴は以下の通りです.
「クラスのインスタンス、すなわちオブジェクトを作成し、そのモードを使用する」
リファレンス
Reference
この問題について(スプリングお気に入りのデザインモード(2)), 我々は、より多くの情報をここで見つけました https://velog.io/@jsj3282/스프링이-사랑한-디자인-패턴2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol