CS(Computer Science)/Design Pattern

팩토리 메소드 패턴

환성 2023. 1. 9. 15:28
728x90
객체를 생성할 떄 어떤 클래스의 인스턴스를 만들 지 서브 클래스에서 결정하게되는 것 
인스턴스 생성을 서브 클래스에게 위임한다.

팩토리 메소드 구조 

UML로 표현된 팩토리 메소드 패턴 구조

 

팩토리 메소드 패턴 예시

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