color
#01A686
fontSong Myung
프로그램을 설계할 때 발생한 문제점들을 객체 간 상호관계를 이용하여 해결할 수 있도록 하나의 '규약'형태로 만들어 놓은 것
하나의 클래스에 하나의 인스턴스만 가지는 패턴
데이터베이스 인스턴스 연결 시
자바에서는 중첩 클래스를 이용해서 구현
class Singleton {
private static class singleInstanceHolder {
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return singleInstanceHolder.INSTANCE;
}
}
public class Hello {
public static void main(String[] args) {
Singleton a = Singleton.getInstance();
Singleton b = Singleton.getInstance();
System.out.println(a.hashCode());
System.out.println(b.hashCode());
if (a == b) {
System.out.println(true);
}
}
}
/*
842792378
842792378
true
*/
더블 체크 로킹 기법
한 개의 공장
여러 개의 공장
객체의 행위를 바꾸고 싶은 경우 코드를 직접 수정하지 않고 '전략'(캡슐화한 알고리즘)을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴
어떤 객체의 상태변화를 관찰하다 상태 변화가 있을 때마다 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 패턴
RabbitMQ 같이 Publish/Subscriber 관계도 옵저버 패턴을 사용한 사례