반응형
심플 팩토리 패턴(Simple Factory Pattern)
심플 팩토리 패턴은 객체 생성을 캡슐화하는 가장 기본적인 디자인 패턴입니다.
function grimpanFactory(type: string) {
if (type === 'ie') {
return IEGrimpan.getInstance();
} else if (type === 'chrome') {
return ChromeGrimpan.getInstance();
} else {
throw new Error('일치하는 타입이 없습니다.')
}
}
- Factory 메소드 (grimpanFactory): 객체 생성 로직을 담당
- 생성될 제품들 (IEGrimpan, ChromeGrimpan): 공통 인터페이스나 부모 클래스를 공유
해당 패턴을 사용할 경우 객체 생성 로직을 한 곳에서 관리하여 코드 중복 방지하며 클라이언트 코드는 구체적인 클래스를 알 필요 없이 팩토리만 사용이 가능합니다. 또한, 새로운 타입 추가가 용이하여 간단하게 확장이 가능합니다.
심플 팩토리 패턴의 주요 한계점
1. SRP(단일 책임 원칙) 위반
- 팩토리 클래스가 너무 많은 책임을 가지게 됨
- 새로운 제품이 추가될 때마다 팩토리 클래스를 수정해야 함
- 이는 "개방-폐쇄 원칙(OCP)"에도 위배됨
2. 복잡한 객체 생성 처리의 한계
function productFactory(type: string, options?: any) {
if (type === 'A') {
// A 제품의 복잡한 생성 로직
return new ProductA(options);
} else if (type === 'B') {
// B 제품의 더 복잡한 생성 로직
return new ProductB(options);
}
// 생성 로직이 복잡해질수록 if-else 구문이 길어지고 복잡해짐
}
3. 확장성 제한
- 새로운 제품 유형 추가 시 팩토리 코드 수정 필요
- 대규모 애플리케이션에서는 팩토리 클래스가 비대해질 수 있음
function deviceFactory(type: string) {
switch(type) {
case 'phone': return new Phone();
case 'tablet': return new Tablet();
case 'laptop': return new Laptop();
// 새로운 기기 추가마다 switch문 수정 필요
}
}
이러한 한계점들 때문에, 복잡한 시스템에서는 더 발전된 팩토리 메소드 패턴과 추상 팩토리 패턴 활용하면 좋습니다.
해당 글은 아래의 강의 내용을 참고하여 작성되어 있습니다.
TS/JS 디자인 패턴 with Canvas: 제로초에게 제대로 배우기
TS/JS 디자인 패턴 with Canvas: 제로초에게 제대로 배우기 강의 | 제로초(조현영) - 인프런
제로초(조현영) | 타입스크립트/자바스크립트로 그림판을 만들어보며 다양한 디자인 패턴의 쓰임과 장단점을 알아봅니다. canvas api를 배울 수 있는 것은 보너스!, 디자인 패턴 배워서 저한테 도
www.inflearn.com
반응형
'디자인패턴' 카테고리의 다른 글
디자인패턴 : 빌더 패턴(Builder Pattern) (0) | 2025.01.10 |
---|---|
디자인패턴 : 추상 팩토리 패턴(Abstract Factory Pattern) (0) | 2025.01.09 |
디자인패턴 : 팩토리 메소드 패턴(Factory method pattern) (1) | 2025.01.09 |
디자인패턴 : SOLID 원칙 (0) | 2025.01.08 |
디자인패턴 : 싱글톤 패턴 (0) | 2025.01.03 |