팩토리 메소드 패턴과 유사하지만 클라이언트라는 개념이 추가로 존재.
Factory 에 해당 하는 부분에서 객체 생성시 구체적인 클래스를 의존하지 않도록
추상화된 클래스를 주입 받도록 한다.
- Client
public class Client {
public static void main(String[] args) {
//intel brand로 주문
NoteBookFactory intelNotebookFactory = new NoteBookFactory(new IntelPartsFactory());
Computer intelComputer = intelNotebookFactory.createNoteBook();
System.out.println(intelComputer.showInfo());
//amd brand로 주문
NoteBookFactory amdNoteBookFactory = new NoteBookFactory(new AmdPartsFactory());
Computer amdComputer = amdNoteBookFactory.createNoteBook();
System.out.println(amdComputer.showInfo());
}
}
- NoteBookFactory
public class NoteBookFactory {
private BrandPartsFactory brandPartsFactory;
/**
* 브랜드 파츠 주입
* @param brandPartsFactory
*/
public NoteBookFactory(BrandPartsFactory brandPartsFactory) {
this.brandPartsFactory = brandPartsFactory;
}
public Computer createNoteBook() {
NoteBook noteBook = new NoteBook();
noteBook.installCpu(brandPartsFactory.createCpu());
noteBook.installRam(brandPartsFactory.createRam());
noteBook.installBrandName(brandPartsFactory.createBrandName());
return noteBook;
}
}
https://github.com/kalkin2/designPattern2208.git
팩토리 메소드 패턴과 유사한점.
모양과 효과는 비슷하지만, 둘다 구체적인 객체 생성과정을 추상화한 인터페이스를 제공한다.
팩토리 메소드 패턴과 다른점.
- 팩토리 메소드 패턴은 팩토리를 구현하는 방법에 초점이 있고,
- 추상팩토리 패턴은 팩토리를 사용하는 방법이 초점이 있다.
- 팩토리 메소드 패턴은 구체적인 객체 생성 과정을 하위, 또는 구체적인 클래스로 옮기는 것이 목적.
- 추상팩토리 패턴은 관련 있는 여러객체를 구체적인 클래스에 의존하지 않고 만들 수 있게 해주는것이 목적.
출처 : 인프런 - 백기선 디자인패턴 정리.
'개발이슈 > 디자인패턴' 카테고리의 다른 글
step builder pattern (스텝빌더 패턴) (0) | 2023.08.28 |
---|---|
Builder Pattern (빌더패턴) (0) | 2022.09.07 |
팩토리 메소드 패턴2 (factory method pattern) (0) | 2022.08.29 |
팩토리 메소드 패턴1 (factory method pattern) (0) | 2013.11.12 |
옵저버패턴2 (0) | 2013.10.31 |