본문 바로가기
카테고리 없음

[디자인 패턴] 팩토리 메서드 패턴

by illlilillil 2022. 4. 5.

팩토리 메소드 패턴이란?


  • 객체 생성을 서브 클래스로 분리해서 캡슐화하는 패턴
  • 객체 생성을 분리해 객체 생성

  • 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));
    }
}

장점


  1. OCP 원칙을 지킬 수 있다. → 기존 코드를 변경하지 않고 확장할 수 있다
  2. 생산자와 생산품의 느슨한 결함 덕분에 확장에 열려있고 변경에는 닫혀있다.
  3. 구체 타입에 의존하지 않는다.
  4. 직접 객체 생성을 하지않고 위임함으로 의존성이 없다.

단점


  1. 클래스 계층이 너무 커질 수 있다.
  2. creator를 거쳐 Product를 생산해야 한다.

 

팩토리 메소드와 추상 팩토리 메소드 차이점

팩토리 메소드 객체의 생성부를 캡슐화하여 결합을 느슨하게 한다. 상속을 통한 오버라이딩으로 객체 구현
추상 팩토리 메소드 객체의 생성부를 캡슐화하여 결합을 느슨하게 한다. 객체 집합 생성을 위한 정의를 추상체에 두고 하위에 세부적인 집합을 생성

 

 

참고 자료

https://www.inflearn.com/course/디자인-패턴/dashboard

 

댓글