객체를 만드는 과정을 감추는 패턴들. 어떤 구체 클래스를 고를지, 생성 단계를 어떻게 보장할지, 생성 비용을 어떻게 줄일지를 다룬다. 호출하는 쪽이 new 구체클래스()를 직접 쓰지 않게 해서 결합도(Coupling)를 낮추는 것이 공통점이다.
- 팩토리 메서드 패턴: 생성 결정을 전용 메서드나 하위 클래스로 미룬다
- 빌더 패턴: 복잡한 객체를 단계별로 조립한다
- 싱글턴 패턴: 인스턴스를 하나로 제한하고 전역 접근점을 준다
- 추상 팩토리(Abstract Factory): 서로 짝이 맞아야 하는 제품들(예: 운영체제별 버튼·체크박스·메뉴)을 한 세트로 만드는 팩토리를 둔다. 제품군을 통째로 갈아 끼우기 쉽지만, 제품 종류가 하나 늘면 모든 팩토리 인터페이스를 고쳐야 한다
- 프로토타입(Prototype): 기존 객체를 복제해서 새 객체를 만든다. 생성 비용이 크거나 구체 클래스를 모를 때 쓴다. 어떤 참조를 공유하고 어떤 것을 새로 만들지(깊은 복사냐 얕은 복사냐)가 까다롭다(얕은 복사와 깊은 복사). JavaScript의 프로토타입 상속과는 다른 이야기다
생성 로직을 바깥 컨테이너가 맡는 의존성 주입(Dependency Injection, DI)은 이 패턴들의 상당 부분을 프레임워크 수준에서 대신한다.