728x90
객체를 생성할 떄 어떤 클래스의 인스턴스를 만들 지 서브 클래스에서 결정하게되는 것
인스턴스 생성을 서브 클래스에게 위임한다.
팩토리 메소드 구조
팩토리 메소드 패턴 예시
Robot(추상 클래스)
- SuperRobot
- PowerRobot
RobotFactory(추상 클래스)
- SuperRobotFactory- ModifiedSuperRobotFactory
# Robot이라는 클래스에서 RobotFactory에서 생성한다.
- RobotFactory 클래스 생성
public abstract class RobotFactory {
abstract Robot createRobot(String name);
}
- SuperRobotFactory 클래스 생성
public class SuperRobotFactory extends RobotFactory {
@Override
Robot createRobot(String name) {
switch(name) {
case "super" :
return new SuperRobot();
case "power" :
return new PowerRobot();
}
return null;
}
}
생성하는 클래스를 따로 만든다.
해당 클래스는 factory 클래스를 상속하고 있기 때문에, 반드시 createRobot을 선언해야 한다.
name으로 건너오는 값에 따라서, 생성되는 Robot이 다르게 설계된다.
장점
- FactoryMethod 패턴의 가장 큰 장점은 지금까지 본 것처럼 수정에 닫혀있고 확장에는 열려있고 OCP 원칙을 지킬 수 있다는 점이다.
단점
- 간단한 기능을 사용할 때보다 많은 클래스를 정의해야 하기 때문에 코드량이 증가한다.
- extends 관계를 너무 많이 사용할 경우 프로그램의 복잡도가 증가하게 된다.
'CS(Computer Science) > Design Pattern' 카테고리의 다른 글
옵저버 패턴 (4) | 2023.01.12 |
---|---|
템플릿 메소드 패턴 (0) | 2023.01.09 |
싱글톤 패턴 (0) | 2023.01.08 |
어댑터 패턴 (0) | 2023.01.08 |