zero-wiki Help

06장-디자인-패턴의-유형

6.1 패턴

디자인 패턴은 공통 설계 구조의 핵심 요소를 이름 짓고 추상화하여 재사용할 수 있는 객체지향 설계를 만드는 데 유용합니다.

또한 유용한 클래스와 인스턴스를 제공하여 각각의 역할과 협업, 책임의 분배를 실현합니다.

디자인 패턴은 어떤 문제를 해결하느냐에 따라 세가지 유형으로 분류됩니다.

  • 생성 패턴

  • 구조 패턴

  • 행위 패턴

6.2 생성 패턴

주어진 상황에 적합한 객체를 생성하는 방법에 중점을 둡니다.

기본적인 객체 생성 방식은 프로젝트의 복잡성을 증가시킬 수도 있기에, 생성 패턴은 이 과정을 제어하여 문제를 해결하는 것을 목표로 합니다.

  • 팩토리(factory): 인터페이스를 기반으로 여러 파생 클래스를 생성

  • 추상(abstract): 구체적인 내부 구현 없이 여러 클래스가 상속받아 사용하는 인스턴스 생성

  • 프로토타입(prototype): 복사 또는 복제에 사용되는 초기화된 인스턴스

  • 싱글톤(singleton): 전역에서 접근 가능한 하나만의 인스턴스를 가진 클래스

  • 빌더(builder): 객체를 생성하는 내부 구현 없이 여러 클래스가 상속받아 사용하는 인스턴스를 생성

6.3 구조 패턴

객체의 구성과 각 객체 간의 관계를 인식하는 방법에 중점을 둡니다. 시스템의 한 부분이 변경이 되더라도 다른 부분에는 영향이 가지 않도록 하며, 설계 목적에 맞지 않는 부분을 개선하는 데에도 도움이 됩니다.

  • 데코레이터(decorator): 객체에 새로운 프로세스를 동적으로 추가

  • 퍼사드(facade): 전체 시스템의 복잡한 부분을 숨기는 단일 클래스

  • 플라이웨이트(flyweight): 여러 객체에 공통 상태를 공유하는 세분화된 인스턴스

  • 프록시(proxy): 실제 객체를 대신하는 대체 객체

6.4 행위 패턴

시스템 내의 객체 간 커뮤니케이션을 개선하거나 간소화하는 방법에 중점을 둡니다.

커뮤니케이션 패턴을 감지하고 책임을 분배함으로써 커뮤니케이션의 유연성을 높이고, 객체의 행위를 추상화합니다.

  • 이터레이터(iterator): 내부 구조를 모른 채 요소에 순차적으로 접근

  • 중재자(mediator): 클래스끼리 서로 직접적으로 참조하지 않도록 중간에 간소화된 연결고리를 정리

  • 관찰자(observer): 클래스간의 일관성을 보장하기 위해 여러 클래스에 변경사항을 알리는 방법

  • 방문자(visitor): 클래스를 변경하지 않고도 새로운 작업을 추가하는 방법

Last modified: 31 March 2025