팩토리 메소드 패턴이란?
- 객체 생성을 서브 클래스로 분리해서 캡슐화하는 패턴
- 객체 생성을 분리해 객체 생성
- Product - Ship
- 객체 생성을 위한 클래스
- ConcreteProduct Extends WhiteShip, BlackShip
- 객체 상속 클래스
- Creator - ShipFactory
- 팩토리 생성 클래스
- ConcreteCreator implements WhiteShipFactory, BlackShipFactory
- 팩토리 구현 클래스
public class Client {
public static void main(String[] args) {
Client client = new Client();
client.print(new WhiteShipFactory(),"whiteShip","asdf@gmail.com");
client.print(new BlackShipFactory(),"blackShip","asdf@gmail.com");
}
private void print(ShipFactory shipFactory, String name, String email) {
System.out.println(shipFactory.orderShip(name,email));
}
}
장점
- OCP 원칙을 지킬 수 있다. → 기존 코드를 변경하지 않고 확장할 수 있다
- 생산자와 생산품의 느슨한 결함 덕분에 확장에 열려있고 변경에는 닫혀있다.
- 구체 타입에 의존하지 않는다.
- 직접 객체 생성을 하지않고 위임함으로 의존성이 없다.
단점
- 클래스 계층이 너무 커질 수 있다.
- creator를 거쳐 Product를 생산해야 한다.
팩토리 메소드와 추상 팩토리 메소드 차이점
팩토리 메소드 | 객체의 생성부를 캡슐화하여 결합을 느슨하게 한다. | 상속을 통한 오버라이딩으로 객체 구현 |
추상 팩토리 메소드 | 객체의 생성부를 캡슐화하여 결합을 느슨하게 한다. | 객체 집합 생성을 위한 정의를 추상체에 두고 하위에 세부적인 집합을 생성 |
참고 자료
https://www.inflearn.com/course/디자인-패턴/dashboard
댓글