전체 글
[Design Pattern] 템플릿 메서드 패턴 (Template Method)
Template Method 템플릿 메소드는 부모 클래스에서 알고리즘 뼈대를 정의하고, 자식 클래스에서 구조를 변경하지 않고 특정 단계를 재정의하는 행위 디자인 패턴입니다. 이미지에서 볼 수 있듯이 세 개의 DataMiner의 mine 메소드는 알고리즘 뼈대가 동일합니다. 그러나 각각 따로 구현하여 코드의 중복이 매우 많고 추가될 클래스에도 중복된 코드를 작성하게 되므로 유지보수성이 떨어집니다. DataMiner라는 인터페이스 또는 추상 클래스를 정의하고 mine 메소드 내부 로직에서 호출하는 메소드만 자식 클래스가 재정의하게 된다면 어떻게 될까요? 보이는 것과 같이 다형성도 살릴 뿐 아니라 유지보수가 매우 간단해집니다. 정형화된 패턴을 UML 클래스 다이어그램으로 표현하면 아래와 같습니다. 장점 알고리..
[Design Pattern] 추상 팩토리 패턴 (Abstract Factory)
Abstract Factory Pattern 추상 팩토리 패턴은 서로 관련 있는 객체들의 구상 클래스들을 일일이 지정하지 않고 인터페이스를 통해 일관성 있게 생성할 수 있는 생성 디자인 패턴입니다. 현실과 거리가 멀지만 한 가지 예시를 들어보겠습니다. 삼성과 애플의 노트북 생산 공장에서 각 사에서 자사 또는 LG의 디스플레이(Display)와 본체(Body)를 조립한다고 가정해보겠습니다. 팩토리 메서드 패턴만 적용한 상태에서 다음과 같은 다이어그램을 그릴 수 있습니다. 이 경우에는 LaptopFactory에서 클라이언트에서 전달받은 Samsung 또는 Apple 키워드를 DisplayFactory와 BodyFactory에 각 부품 생산을 위임하고 실제 DisplayFactory와 BodyFactory의..
[Design Pattern] 팩토리 메서드 패턴 (Factory Method)
Factory Method Pattern 부모 클래스에서 객체들을 생성할 수 있는 인터페이스만 제공하고 실제 생성될 객체들의 유형을 자식 클래스들이 결정할 수 있도록 하는 생성 디자인 패턴입니다. 즉, 클라이언트 코드가 구상체에 의존하지 않고 추상 메소드를 통해서 생성될 자식 클래스를 지정할 수 있습니다. 예시 구조는 다음과 같습니다. 장점 개방 폐쇄 원칙(OCP)를 준수합니다. 기존 클라이언트를 변경하거나 수정하지 않고 확장이 가능합니다. 단점 패턴을 구현하기 위해 많은 클래스를 만들어야 하므로 복잡해질 수 있습니다. 참조 refactoring.guru 위키백과