-
[디자인 패턴] 팩토리 패턴 (factory pattern)Computer Science/Design Pattern 2022. 12. 13. 00:09반응형
팩토리패턴이란?
: 객체 생성 처리를 하위 클래스로 분리해 처리하도록 캡슐화하는 패턴
- 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화
- 상속 관계에 있는 두 클래스에서 상위클래스는 중요한 뼈대를 결정하고 하위클래스는 객체 생성에 관한 구체적인 내용을 결정
- 상위 클래스에서는 인스턴스 생성 방식에 대해 관여하지 않기 때문에 더 많은 유연성을 가짐
- 객체 생성로직이 따로 있기 때문에 코드 리팩토링에 있어서 편의성 증가[ 구현 방법 ]
abstract class Coffee { public abstract int getPrice(); @Override public String toString() { return "This coffee is " + this.getPrice(); } } class CoffeeFactory { public static Coffee getCoffee(String type, int price) { if("Latte".equalsIgnoreCase(type)) return new Latee(price); else if("Americano".equalsIgnoreCase(type)) return new Americano(price); else { return new BlackCoffee(); } } } Class BlackCoffee extends Coffee { private int price; public BlackCoffee() { this.price = -1; } @Override public int getPrice() { return this.price; } } Class Latte extends Coffee { private int price; public Latte(int price) { this.price = price; } @Override public int getPrice() { return this.price; } } Class Americano extends Coffee { private int price; public Americano(int price) { this.price = price; } @Override public int getPrice() { return this.price; } } public class Test { public static void main(String[] args) { Coffee latte = CoffeFactory.getCoffee("Latte", 4000); System.out.println("Factory Lattee :: " + latte); } } /* * Facotry Latte :: This coffee is 4000 */
[ 장점 ]
1. 제품 클래스 계통을 수정하지 않고 쉽게 적용 가능
2. 클래스를 통해 생성한 객체를 반환 받아 사용하기 때문에 코드 관리 효율성 증가 및 결합도를 낮춰 유지 보수 용이
[ 단점 ]
1. 제품이 추가 될때마다 팩토리 클래스도 추가되어야 하여 클래스의 수가 많아지게 됨
반응형'Computer Science > Design Pattern' 카테고리의 다른 글
[디자인 패턴] 프록시 패턴 (Proxy Pattern) (0) 2022.12.13 [디자인 패턴] 옵저버 패턴 (Observer Pattern) (0) 2022.12.13 [디자인 패턴] 전략 패턴 (Strategy Pattern) (0) 2022.12.13 [디자인 패턴] 싱글톤 패턴(Singleton Pattern) (0) 2022.12.12 [디자인 패턴 Java] 디자인 패턴이란? (0) 2022.10.12