JUINTINATION

디자인패턴 개요 본문

JAVA객체지향디자인패턴

디자인패턴 개요

DEOKJAE KWON 2023. 7. 3. 00:06
반응형

디자인패턴이란?

  • 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들이 또 발생했을 때 재사용할 수 있는 해결책
  • 패턴이란?
    • 비슷하거나 동일한 양식 또는 유형들이 반복되어 나타나는 것
    • 문제와 해결책도 동일한 유형이나 양식을 통해 쉽게 찾을 수 있다.
  • 디자인 패턴에 적절한 격언
    • 바퀴를 다시 발명하지 마라 (Dont reinvent the wheel)
      • 이미 잘 굴러가는 바퀴는 처음부터 다시 만들 필요가 없다.

디자인패턴 구조

  1. 콘텍스트 : 문제가 발생하는 여러 상황을 기술
    • 문제가 발생하는 여러 상황을 기술한다. 즉, 패턴이 적용될 수 있는 상황을 나타낸다.
    • 경우에 따라서는 패턴이 유용하지 못하는 상황을 나타내기도 한다.
  2. 문제 : 패턴이 적용되어 해결될 필요가 있는 디자인 이슈
    • 패턴이 적용되어 해결될 필요가 있는 여러 디자인 이슈들을 기술한다.
    • 이때 여러 제약 사항과 영향력도 문제 해결을 위해 고려해야 한다
  3. 해결 : 요소들 사이의 관계/책임/협력 등을 기술
    • 문제를 해결하도록 설계를 구성하는 요소들과 그 요소들 사이의 관계, 책임, 협력 관계를 기술한다.
    • 해결은 반드시 구체적인 구현 방법이나 언어에 의존적이지 않으며 다양한 상황에 적용할 수 있는 일종의 템플릿이다.
  • 기존의 설계 방법 논의
    • 콘텍스트: 클래스가 객체를 생성하는 과정을 제어해야 하는 상황
    • 문제: 애플리케이션이 전역적으로 접근하고 관리할 필요가 있는 데이터를 포함한다. 동시에 이러한 데이터는 시스템에 유일하다. 어떤 방식으로 클래스에서 생성되는 객체의 수를 제어하고 클래스의 인터페이스에 접근하는 것을 제어해야 하는가?
    • 해결: 클래스의 생성자를 public으로 정의하지 말고 private이나 protected로 선언해 외부에서 생성자를 이용해 객체를 일단 생성할 수 없게 만들고…(이하 생략).
  • 디자인 패턴 적용 시
    • 싱글톤 패턴을 사용해보자

GoF(Gang of Four) 디자인패턴

  • 생성 패턴: 객체의 생성에 관련된 패턴
  • 구조 패턴: 클래스를 조합해 더 큰 구조를 만드는 패턴
  • 행위 패턴: 알고리즘이나 책임의 분배에 관한 패턴
  생성 패턴 구조 패턴 행위 패턴
패턴 이름 추상 팩토리(Abstract Factory)
빌더(Builder)
팩토리 메서드(Factory Method)
프로토타입(Prototype)
싱글턴(Singleton)

어댑터(Adaptor)
브리지(Bridge)
컴퍼지트(Composite)
데커레이터(Decorator)
퍼사드(Facade)
플라이웨이트(Flyweight)
프록시(Proxy)
책임 연쇄(Chain of Responsibility)
커맨드(Command)
인터프리터(Interpreter)
이터레이터(Iterator)
미디에이터(Mediator)
메멘토(Memento)
옵서버(Observer)
스테이트(State)
스트레티지(Strategy)
템플릿 메서드(Templete Method)
비지터(Visitor)

 

728x90

'JAVA객체지향디자인패턴' 카테고리의 다른 글

스테이트(State) 패턴  (0) 2023.07.06
스트래티지(Strategy) 패턴  (0) 2023.07.06
싱글턴(Singleton) 패턴  (0) 2023.07.05
좋은 객체 지향 설계의 5가지 원칙 (SOLID)  (0) 2023.07.02
객체 지향 원리  (0) 2023.07.02
Comments