728x90
디자인 패턴
- 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴
구성 요소
- context (문맥/상황) : 패턴이 적용 될 수 있는 상황
- problem (문제) : 패턴이 적용되어 해결될 필요가 있는 이슈
- solution (해결) : 문제를 해결하도록 설계를 구성하는 요소들과 그 요소들 사이의 관계, 책임, 협력 관계를 기술
생성 패턴 : 객체 인스턴스 생성에 관여, 클래스 정의와 객체 생성 방식을 구조화, 캡슐화를 수행
- Abstraction factory(추상팩토리) : 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스
- Builder : 작게 분리된 인스턴스를 조립하듯 조합
- Factory method : 상위 클래스에서 객체를 생성하는 인터페이스를 정의하고, 하위클래스에서 인스턴스를 생성하도록 하는 방식
- Prototype : 원본 객체를 복제하여 객체를 생성하는 패턴 (비용 절약)
- Singleton : 전역변수를 사용하지 않고 객체를 하나만 생성하며, 어디서든 참조가 가능
구조 패턴 : 클래스나 객체의 조합을 다루는 패턴
- Adapter : 호환성이 없는 인터페이스를 개조하여 함께 작동하도록 해주는 패턴
- Bridge : 기능 클래스 계층과 구현의 클래스 계층을 연결
- Composite : 복합 객체와 단일 객체를 클라이언트에서 구별없이 다루게 함
- Decorator : 기능을 동적으로 유연하게 확장 할 수 있게 함
- Facade : Facade 객체를 통해서만 모든 관계가 이루어지도록 인터페이스를 단순화, 의존도가 줄고 복잡성이 낮아짐
- Flyweight : 인스턴스를 매번 생성하지 않고 가능한 선에서 공유 (메모리 절약)
- Proxy : 접근이 어려운 객체와 연결하려는 다른 객체와 인터페이스 임무를 수행
행위 패턴 : 클래스나 객체들이 상호작용하는 방법과 역할 분담을 다루는 패턴 (메시지 교환)
- Chain of Responsibility(책임연쇄) : 요청하는 객체와 처리하는 객체 사이의 결합도 제거 목적
- Command : 요청을 캡슐화, 클라이언트를 파라미터화하고, 요청을 저장하거나 기록을 남겨 오퍼레이션의 취소 가능
- Interpreter : 언어의 다양한 해석, 구체적으로 구문을 나누고 그 분리된 구문의 해석을 맡는 클래스를 각각 작성하여 여러 형태의 언어 구문을 해석 할 수 있게함
- Interator(반복자) : 내부표현 방법을 노출하지 않고 복합 객체 원소를 순차 접근
- Mediator(중재자) : 객체의 상호작용 캡슐화, 참조 관계를 객체에서 분리. 상호 작용만 확대가능. 통신의 빈도수를 줄여 객체지향의 목표 달성
- Memento : 객체 내부상태를 객체화하여, 나중에 객체가 원상 복구를 가능하게 함
- Observer(감시자) : 한 객체의 상태가 변하면 종속된 다른 객체에 통보, 자동 수정. 1:N의 의존성을 가지며, 객체 사이에서 느슨한 결합
- State : 내부 상태에 따라 행위를 변경 할 수 있게 함
- Strategy(전략) : 클라이언트에 영향을 주지 않고 독립적으로 알고리즘을 다양하게 변경
- Template method : 알고리즘의 처리과정만 정의, 각 단계의 처리를 서브 클래스에서만 가능. 코드양을 줄이고 유지보수가 용이
- Visitor : 로직과 구조를 분리하는 패턴. 객체의 구조는 변경하지 않으면서 기능만 따로 추가하거나 확장할 때 사용
728x90
'computer science' 카테고리의 다른 글
유인원도 이해하는 Docker (0) | 2025.03.05 |
---|---|
DevOps를 지망하는 사람들을 위한 안내서 (1) | 2024.01.05 |
[SSO] 회원가입 그만하고싶어! (0) | 2023.05.25 |
[보안] 와이파이는 되는데, 테더링이 안된다고? (0) | 2023.05.02 |
NET::ERR_CERT_INVALID ERROR (0) | 2022.12.15 |