디자인 패턴?
- Design Pattern(디자인패턴) : 각기 다른 소프트웨어 모듈이나 기능을 가진 응용 소프트웨어를 개발할 때 공통되는 설계 문제를 해결하기 위한 공통된 패턴
그러니까,, 바퀴가 있는데 왜 바퀴를 다시 만들고 있냐?
* 우리는 프로그래머니까 효율적인 방식을 택하자!
Why,, 디자인 패턴????
- 같은 문제에 대해서는 똑같은 설계법을 사용해서 다른 개발자와 의사소통을 원활하게 하고, 쉽게 개발하자!
- 개발자마다 코딩 방식이 다른데, 협업을 위해서는 우리들만의 표준이 필요하다!!
- 제발 코드를 작성할 때 읽기 좋게 작성해주세요ㅠㅠ
디자인 패턴 구조
1. Context
- 패턴이 적용될 수 있는 상황을 나타낸다.
- But, 경우에 따라서는 패턴이 유용하지 못한 상황이 나올 수도 있다.
2. Problem
- 패턴이 적용되어 해결될 필요가 있는 여러 디자인 이슈를 기술한다.
- 여러 제약 상황과 영향력도 문제 해결을 위해 고려해야 한다.
3. Solution
- 문제를 해결하도록 설계를 구성하는 요소들에 대한 관계, 책임, 협력 관계를 꼭 기술한다!
- 언어에 의존적이지 않으며, 템플릿 같은 존재다
디자인 패턴 종류
- 다양한 문제법들이 많은데, 참 많은 디자인 패턴들이 존재한다!
- 크게는 3가지 종류가 있다.
- 생성(Creational) 패턴
- 구조(Structural) 패턴
- 행위(Behavioral) 패턴
생성 패턴 | 구조 패턴 | 행위 패턴 |
|
|
|
필자도 다 몰라요 ㅠ_ㅠ
* 생성 패턴 : 객체의 생성과 조합을 객체화해서 도메인 로직이 바뀌어도 구조를 바꿀 필요가 없다
* 구조 패턴 : 객체끼리 조합해서 더 큰 구조를 만드는 패턴
* 행위 패턴 : 객체 사이에 알고리즘 혹은 책임을 분배하는 패턴
- 그 중에서도 자주 쓰는 패턴들에 대해 알아보도록 하자!
1. 생성 패턴
* 추상 팩토리(Abstract Factory) : 클래스 객체 생성에 의존하지 않고, 의존적인 객체들의 조합을 만드는 패턴
* 팩토리 메서드(Factroy Methods) : 객체 생성을 SubClass로 분리해 처리하는 패턴
* 싱글톤(Singleton) : 전역 변수를 사용하지 않고, 객체를 한 개만 생성하는 패턴
2. 구조 패턴
* 컴포지트(Composite) : 여러 개의 객체들로 구성된 복합 객체와 단일 객체를 Client에서 구별 없이 다루게 해주는 패턴
* 데커레이터(Decorate) : 객체의 결합을 통해 기능을 동적으로 유연하게 확장하는 패턴
3. 행위 패턴
* 옵서버(Observer) : 한 객체의 상태 변화에 따라 다른 객체의 상태도 연동되도록 1:n 의존 관계를 구성하는 패턴
* 스테이트(State) : 객체의 상태에 따라 객체의 행위 내용을 변경해주는 패턴
* 전략(Strategy) : 행위를 클래스로 캡슐화해서 동적으로 행위를 자유롭게 바꿀 수 있는 패턴
* 템플릿 메서드 : 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않고 특정 단계에서 수행하는 내역을 바꾸는 패턴
* 커맨드(Command) : 실행될 기능을 캡슐화해 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴
참고
[Design Pattern] 디자인 패턴 종류
'Developer > Design Pattern' 카테고리의 다른 글
Template Method Pattern - 템플릿 메소드 패턴 (0) | 2019.06.09 |
---|---|
Observer Pattern - 옵저버 패턴 (0) | 2019.06.09 |
Visitor Pattern - 비지터 패턴, 방문자 패턴 (2) | 2019.05.26 |
Strategy Pattern - 스트레지 패턴, 전략 (0) | 2019.05.26 |
Singleton Pattern - 싱글톤 패턴 (6) | 2019.05.24 |