본문 바로가기

디자인 패턴3

[디자인 패턴] 컴포지트(Composite) 패턴 Goal 컴포지트 패턴을 이해한다. 컴포지트(Composite) 패턴 전체 - 부분의 관계를 갖는 객체들 사이의 관계를 정의할 때 유용한 패턴 Component : 구체적인 부분, 즉 Leaf 클래스와 전체에 해당하는 Composite 클래스에 공통 인터페이스를 정의 Leaf : 구체적인 부분 클래스 Composite : 전체 클래스로 복수 개의 Component를 갖도록 정의. 복수 개의 Leaf를 가질 수 있다. 컴포지트 패턴은 부분 - 전체의 관계를 갖는 객체들을 정의할 때 유용하다. 예를 들어서 컴퓨터(전체)와 [모니터, 마우스, 스피커](부분)의 관계를 정의할 때 사용할 수 있다. 컴퓨터와 컴퓨터에 추가 장치를 지원하는 기능을 구현해보자 우선 컴퓨터를 모델링할 때 기본적으로 키보드, 본체, 모니.. 2021. 6. 4.
[디자인 패턴] 팩토리(Factory) 메서드 패턴 Goal 팩토리 메서드를 이해한다. 팩토리(Factory) 메서드 패턴 팩토리 메서드 패턴은 객체를 생성하는 코드를 별도의 클래스/메서드로 분리해 캡슐화하는 패턴 팩토리 메서드 패턴은 객체를 생성하는 코드를 별도의 클래스/메서드로 분리함으로써 객체 생성 방식의 변화에 대비하는데 유용하다. 프로그램이 제공하는 기능은 상황에 따라 언제나 변경될 수 있기 때문에 아래와 같은 문제점이 발생할 수 있다. 기능의 변경이나 상황에 따른 기능의 선택은 바로 해당 객체를 생성하는 코드의 변경을 초래한다. 상황에 따라 적절한 객체를 생성하는 코드는 자주 중복될 수 있다. 따라서 특정 기능의 구현은 개별 클래스를 통해 제공되는 것이 바람직한 설계이다. Product : 팩토리 메서드에 생성될 객체의 공통 인터페이스 Conc.. 2021. 5. 31.
[디자인 패턴] 데코레이터(Decorator) 패턴 Goal 데코레이터 패턴을 이해한다. 데코레이터(Decorator) 패턴 데코레이터 패턴은 기본 기능에 추가할 수 있는 많은 종류의 부가 기능에서 파생되는 다양한 조합을 동적으로 구현할 수 있는 패턴 Component 클래스에는 기본적인 기능을 뜻하는 ConcreteComponet와 추가 기능에 뜻하는 Decorator의 공통 기능에 대해서 정의한다. ConcreteComponet 클래스에서는 기본적인 기능에 대해서 구체적으로 구현한다. Decorator 클래스에서는 기본적인 기능 외에 추가적인 기능에 대해서 구현한다. ConcreteDecorator 클래스에서는 많은 수가 존재하는 구체적인 Decorator의 공통 기능을 제공한다. ConcreteDecorator 클래스에서 추가되는 개별적인 기능을 구.. 2021. 5. 23.