어떤 Product를 만들지가 바뀔 때 Creator 하위 클래스가 생성을 결정하게 합니다.
패턴 결합 분리
팩토리, 싱글턴, 어댑터, 옵저버, 전략은 서로 다른 변경 압력을 다룹니다. 먼저 어떤 책임이 자주 흔들리는지 확인합니다.
설정, 로거처럼 하나의 인스턴스가 필요할 때 생성자를 막고 getInstance로 접근합니다.
OldPaymentGateway처럼 메서드 모양이 다른 객체를 NewPaymentGateway 계약에 맞춥니다.
Subject의 상태 변화가 생기면 등록된 Observer가 update로 각각 반응합니다.
결제 방식처럼 알고리즘을 실행 시점에 교체해야 할 때 Context가 인터페이스에만 의존합니다.