CS 지식노트 week 1-1 싱글톤, 팩토리, 전략, 옵저버

froajnzd·2024년 10월 11일
0

cs note

목록 보기
1/2
post-thumbnail

color #01A686 font Song Myung

디자인 패턴

프로그램을 설계할 때 발생한 문제점들을 객체 간 상호관계를 이용하여 해결할 수 있도록 하나의 '규약'형태로 만들어 놓은 것

1. 싱글톤 패턴

하나의 클래스에 하나의 인스턴스만 가지는 패턴

  • 장점
    인스턴스 생성 비용 감소
  • 단점
    의존성 증가
    TDD할 때 어려움: 테스트가 독립적이어야 하는 단위테스트 시 각 테스트마다 독립적인 인스를 만들기가 어려움

쓰임

데이터베이스 인스턴스 연결 시

구현

자바에서는 중첩 클래스를 이용해서 구현

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
*/

더블 체크 로킹 기법

2. 팩토리 패턴

2.1. 팩토리 메소드 패턴

한 개의 공장

2.2 추상 팩토리 패턴

여러 개의 공장

3. 전략 패턴

객체의 행위를 바꾸고 싶은 경우 코드를 직접 수정하지 않고 '전략'(캡슐화한 알고리즘)을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴

4. 옵저버 패턴

어떤 객체의 상태변화를 관찰하다 상태 변화가 있을 때마다 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 패턴

RabbitMQ 같이 Publish/Subscriber 관계도 옵저버 패턴을 사용한 사례

profile
Hi I'm 열쯔엉

0개의 댓글