팩토리 메서드는 부모 클래스에서 객체들을 생성할 수 있는 인터페이스를 제공합니다.
자식 클래스들이 생성될 객체들의 유형을 변경할 수 있도록 하는 생성 패턴이다.
TransPort 메소드를 상속받아서 각각 Ship과 Truck에 deliver() 메서드를 새롭게 오버라이딩하여 하나의 transPort로 처리하는 것이 아닌 각각 다른 기능을 가진 메소드를 생성할 수 있게 된다.
이런 생성방식을 통해서 상속하는 부모 노드에 독립적으로 확장하는 것이 쉬워진다.
관련 객체들의 구상 클래스들을 지정하지 않고도 관련 객체들의 모음을 생성할 수 있도록 하는 생성패턴입니다.
부모 객체인 팩토리 인터페이스를 기반으로 팩토리 클래스를 생성한다.
팩토리는 특정 종류의 제품을 반환한다.
팩토리 메소드 패턴은 한 종류의 객체를 만들기 위해 해당 객체를 생성하는 팩토리 인터페이스를 구현해서 만드는 것이다.
=> 즉 1개의 인터페이스 - 하나의 객체를 생성하는데 사용
그에 비해 추상 팩토리 패턴은 팩토리 객체가 아닌 다른 객체 내부에 구현되어 해당 객체에서 여러 타입의 객체를 생성하기 위해서 사용된다.
=> 1개의 인터페이스 - 여러 타입의 객체를 생성
복잡한 객체들을 단계별로 생성할 수 있게하는 생성 디자인 패턴이다.
이 패턴 사용시 같은 제작 코드를 사용하여 객체의 다양한 유형들과 표현을 제작한다.
이렇게 객체 생성을 위한 일련의 단계들을 분리하고 난 후, 객체를 생성하고 싶다면 위 단계들을 빌더 객체에 실행하면 된다.
(모든 단계를 호출 할 필요가 없다.)