공통적인 애플리케이션 설계문제의 해법이다.
보통 객체 생성 및 객체 간 상호 작용 문제를 해결하는데 디자인 패턴을 활용.
💨 패턴은 실전에 바로 적용 가능한 표준적인 틀이라 할 수있다.
💨 다양한 프로그래밍 언어 개발자가 서로 같은 용어를 써서 효과적으로 소통할 수 있게 해준다.
아키텍쳐 패턴 vs 디자인 패턴
- 아키텍쳐 패턴은 디자인 패턴보다 상위 수준의 설계에 사용된다.
- 아키텍쳐 패턴이 전체 시스템의 구조를 설계하기 위한 참조 모델이라면,
디자인 패턴은 서브시스템에 속하는 컴포넌트들끼리의 관계를 설계하기 위한 참조 모델이다.
아키텍쳐 패턴 예시
- 계층화 패턴
- 브로커 패턴
- 파이프 필터 패턴
- MVC패턴
- 클라이언트 서버 패턴
디자인 패턴 유형
목적과 범위에 따른 구분
🔴 생성 패턴(Creational Pattern)
객체 인스턴스를 생성하는 패턴으로, 클라이언트와 그 클라이언트가
생성해야하는 객체 인스턴스 사이의 연결을 끊어주는 패턴.
🟠 행동 패턴(Behavioral Pattern)
객체들이 상호작용하는 방법과 역활을 분담하는 방법을 다루는 패턴
🟡 구조 패턴(Structural Pattern)
클래스와 객체를 더 큰 구조로 만들 수 있게 구성할 때 사용하는 패턴
1) Builder : 생산 단계를 캡슐화 하여 구축 공정을 동일하게 이용하도록 하는 패턴
2) Prototype : 복사하여 새 개체를 생성할 수 있도록 하는 패턴
3) Factory Method : 객체를 생성하기 위한 인터페이스를 정의하여 어떤 클래스가 인스턴스화 될 것인지는 서브 클래스가 결정하도록 하는 패턴
4) Abstract Method : 생성군들을 하나의 모아놓고 팩토리 중에서 선택하게 하는 패턴
5) Singleton : 유일한 하나의 인스턴스를 보장하도록 하는 패턴
1) Bridge : 추상과 구현을 분리하여 결합도를 낮춘 패턴
2) Decorator : 소스를 변경하지 않고 기능을 확장하도록 하는 패턴
3) Facade : 하나의 인터페이스를 통해 느슨한 결합을 제공하는 패턴
4) Flyweight : 대량의 작은 객체들을 공유하는 패턴
5) Proxy : 대리인이 대신 그 일을 처리하는 패턴
6) Composite : 개별 객체와 복합 객체를 클라이언트에서 동일하게 사용하도록 하는 패턴
7) Adapter : 인터페이스로 인해 함께 사용하지 못하는 클래스를 함께 사용하도록 하는 패턴
1) Interpreter : 언어 규칙 클래스를 이용하는 패턴
2) Template Method : 알고리즘 골격의 구조를 정의한 패턴
3) Chain of Responsibility : 객체들끼리 연결 고리를 만들어 내부적으로 전달하는 패턴
4) Command : 요청 자체를 캡슐화하여 파라미터로 넘기는 패턴
5) Iterator : 내부 표현은 보여주지 않고 순회하는 패턴
6) Mediator : 객체 간 상호작용을 캡슐화한 패턴
7) Memento : 상태 값을 미리 저장해 두었다가 복구하는 패턴
8) Observer : 상태가 변할 때 의존자들에게 알리고, 자동 업데이트하는 패턴
9) State : 객체 내부 상태에 따라서 행위를 변경하는 패턴
10) Strategy : 다양한 알고리즘 캡슐화하여 알고리즘 대체가 가능하도록 한 패턴
11) Visitor : 오퍼레이션을 별도의 클래스에 새롭게 정의한 패턴
https://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS8616098823