[JAVA]デザインモード-モノトーン
デザイン
これは解決策のようなものです.
📝 モノトーン
オブジェクトの設計モード
オブジェクトを返します.
SingleTonオブジェクトの利点
メモリを有効に使用できます.
共有機能を作成するだけで、
複数の場所で再利用できます.
異なるクラス間でデータを共有しやすい
オブジェクトは使用にアクセスできます.
❗️ただし複数クラスのオブジェクトから同時にモノトーンオブジェクトのデータにアクセスする
これにより、同期性の問題が発生する可能性があります.
SingleTonの作成
1.静的に自分のオブジェクトを宣言
オブジェクト、メンバー変数、メソッドと区別できます.
// 싱글톤 예시
public class Calc{
static Calc current;
}
2.外部から直接触れないように隠す。
public class Calc{
private static Calc current;
}
3.オブジェクトの割り当てを禁止外部でのオブジェクトの作成を禁止する
new演算子を使用してオブジェクトを割り当てることは禁止されています.
public class Calc{
private static Calc current;
// 생성자를 private
private Calc() {}
}
4.非表示オブジェクトを割り当てたりメモリから削除したりする機能が追加されました
メソッドの割り当てと削除が必要です.
public class Calc{
private static Calc current;
private Calc() {}
// 객체 할당 처리
// 객체가 할당되지 않은 경우에만 할당하도록 하여 중복 할당을 방지한다.
public static Calc getInstance() {
if(current == null) {
current = new Calc();
}
return current;
}
// 객체에 null을 대입하면 메모리에서 삭제된다.
public static void freeInstance() {
current = null;
}
}
コードの例
public class Calc {
// ------------------------ 싱글톤 객체 생성을 위한 준비 시작 ----------------------
private static Calc current;
private Calc() {}
public static Calc getInstance() {
if(current == null) {
current = new Calc();
}
return current;
}
public static void freeInstance() {
current = null;
}
// ------------------------ 싱글톤 객체 생성을 위한 준비 끝 ----------------------
// 이 클래스가 구현해야 하는 기능
public void plus(int x, int y) {
int z = x + y;
System.out.println(x + " + " + y + " = " + z);
}
public void minus(int x, int y) {
int z = x - y;
System.out.println(x + " - " + y + " = " + z);
}
}
public class Main {
public static void main(String[] args) {
// 별도의 객체에 참조시키는 경우
Calc loader1 = Calc.getInstance();
loader1.plus(10, 20);
// 참조처리를 생략하고 직접 사용하는 경우
Calc.getInstance().minus(100, 50);
Calc.getInstance().plus(100, 50);
}
}
👉 実行結果10 + 20 = 30
100 - 50 = 50
100 + 50 = 150
📙 整理する
単一トーンはgetInstance()メソッドを使用してオブジェクトを受信する形で使用します.
複数のオブジェクトを返しても、1つの静的オブジェクトが同時に参照されます.
メモリに割り当てられるグローバルオブジェクトは1つだけです.
Reference
この問題について([JAVA]デザインモード-モノトーン), 我々は、より多くの情報をここで見つけました https://velog.io/@hyun_ha/JAVA-디자인-패턴-싱글톤-SingleTonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol