JAVA

JAVA 기초 - Design Pattern

명주_^ 2022. 6. 10. 14:02

Desing Pattern

  • 싱글턴(Singleton)
  • 추상팩토리(Abstract Factory)
  • 스트래티지(Strategy)
  • 옵저버(Observer)

 

SingleTon Pattern

- 하나의 인스턴스만 생성되어야 한다. Bridge 역할.

이때 DAO를 SingleTon으로 만든다.

- 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

1. 첫번째 예시

 

2. 두번째 예시

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에서 값을 지정할 때마다 출력문이 출력.