JUINTINATION
디자인패턴 개요 본문
반응형
디자인패턴이란?
- 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들이 또 발생했을 때 재사용할 수 있는 해결책
- 패턴이란?
- 비슷하거나 동일한 양식 또는 유형들이 반복되어 나타나는 것
- 문제와 해결책도 동일한 유형이나 양식을 통해 쉽게 찾을 수 있다.
- 디자인 패턴에 적절한 격언
- 바퀴를 다시 발명하지 마라 (Dont reinvent the wheel)
- 이미 잘 굴러가는 바퀴는 처음부터 다시 만들 필요가 없다.
- 바퀴를 다시 발명하지 마라 (Dont reinvent the wheel)
디자인패턴 구조
- 콘텍스트 : 문제가 발생하는 여러 상황을 기술
- 문제가 발생하는 여러 상황을 기술한다. 즉, 패턴이 적용될 수 있는 상황을 나타낸다.
- 경우에 따라서는 패턴이 유용하지 못하는 상황을 나타내기도 한다.
- 문제 : 패턴이 적용되어 해결될 필요가 있는 디자인 이슈
- 패턴이 적용되어 해결될 필요가 있는 여러 디자인 이슈들을 기술한다.
- 이때 여러 제약 사항과 영향력도 문제 해결을 위해 고려해야 한다
- 해결 : 요소들 사이의 관계/책임/협력 등을 기술
- 문제를 해결하도록 설계를 구성하는 요소들과 그 요소들 사이의 관계, 책임, 협력 관계를 기술한다.
- 해결은 반드시 구체적인 구현 방법이나 언어에 의존적이지 않으며 다양한 상황에 적용할 수 있는 일종의 템플릿이다.
- 기존의 설계 방법 논의
- 콘텍스트: 클래스가 객체를 생성하는 과정을 제어해야 하는 상황
- 문제: 애플리케이션이 전역적으로 접근하고 관리할 필요가 있는 데이터를 포함한다. 동시에 이러한 데이터는 시스템에 유일하다. 어떤 방식으로 클래스에서 생성되는 객체의 수를 제어하고 클래스의 인터페이스에 접근하는 것을 제어해야 하는가?
- 해결: 클래스의 생성자를 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