JAVA
JAVA 기초 - Design Pattern
명주_^
2022. 6. 10. 14:02
Desing Pattern
- 싱글턴(Singleton)
- 추상팩토리(Abstract Factory)
- 스트래티지(Strategy)
- 옵저버(Observer)
SingleTon Pattern
- 하나의 인스턴스만 생성되어야 한다. Bridge 역할.
- MyClass와 YouClass에서 data를 주고받을 때
public class SingleTonClass {
private static SingleTonClass sc = null;
public int num;
private SingleTonClass() {
}
public static SingleTonClass getInstance() {
if (sc == null) {
sc = new SingleTonClass();
}
return sc;
}
}
- SingleTon에서 getInstance()를 만들어 같은 객체가 호출되도록 한다.
import single.SingleTonClass;
public class MyClass {
private int number;
public MyClass() {}
public MyClass(int number) {
super();
this.number = number;
}
public void method() {
SingleTonClass sc = SingleTonClass.getInstance();
sc.num = number;
}
}
- MyClass 에서 SingleTon에 data 저장
import single.SingleTonClass;
public class YouClass {
private int tag;
@Override
public String toString() {
return tag + "";
}
public void func() {
SingleTonClass sc = SingleTonClass.getInstance();
tag = sc.num;
}
}
- YouClass 에서 SingleTon에 저장된 data 접근
- HeClass 에서도 data에 접근하고자 하면 SingleTonClass의 getInstance() 호출
Factory
- object 공장. 원하는 object를 생성하기 위한 pattern
Observer
정찰 or 감시, 변화를 감지
@Override
public void notifyObservers(Object arg) {
String str = (String) arg;
if (str.equals(perArg)) // 변화가 없다
return;
perArg = str;
setChanged(); // reset
super.notifyObservers(arg);
clearChanged();
}
- observable ( java import)
package observer;
import java.util.Observable;
import java.util.Observer;
public class ObserverA implements Observer {
@Override
public void update(Observable o, Object arg) {
// TODO Auto-generated method stub
String str = (String) arg;
System.out.println("감시자 A입니다. 통지를 받았음 >> " + str);
}
}
- obeserver
- Main에서 값을 지정할 때마다 출력문이 출력.