728x90
- 소프트웨어 공학의 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴
생성 패턴(Creational Patterns)
- 객체 생성에 관련된 패턴
- 객체의 생성과 조합을 캡슐화해 특정 객체가 생성되거나 변경되어도 프로그램 구조에 영향을 크게 받지 않도록 유연성을 제공
- 싱글톤 패턴(Singleton) - 클래스의 인스턴스가 하나임을 보장하고 접근할 수 있는 전역적인 접근점을 제공하는 패턴. 디자인 패턴 중 가장 많이 알려진 패턴.
- 추상팩토리 패턴(Abstract Factrory) - 구체적인 클래스를 지정하지 않고 관련성이 있거나, 독립적인 객체를 생성하기 위한 인터페이스를 제공하는 패턴
- 빌터 패턴(Builder) - 복합 객체의 생성과정과 표현과정을 분리시켜 동일한 생성과정에서 다양한 표현을 생성할 수 있는 패턴
- 복합 객체 - 객체지향에서 객체란 단순히 데이터와 함수만을 갖는 작은 단위뿐만 아니라 데이터 부분에 다른 객체를 갖을 수 있는데 이와 같은 관계를 복합화(Composition) 또는 복합 관계라고 한다.
- 한 객체가 다른 객체를 포함할 때 이 객체를 복합 객체라고 한다.
- 팩토리 메서드 패턴(Factory Method) - 객체를 생성하는 인터페이스를 정의하지만, 인스턴스를 만드는 클래스는 서브클래스에서 결정하도록 하는 패턴. 팩토리 메서드에서는 인스턴스를 만드는 것을 서브 클래스에서 하게 된다.
- 원형 패턴(Prototype) - 생성할 객체의 종류를 명시하는 데 원형이 되는 예시물을 이용하고 새로운 객체를 이 원형들을 복사함으로써 생성하는 패턴
구조 패턴(Structural Patterns)
- 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴
- 서로 다른 인터페이스를 지닌 2개의 객체를 묶어 단일 인터페이스를 제공하거나 서로 다른 객체들을 묶어 새로운 기능을 제공하는 패턴
- 적응자 패턴(Adapter or Wrapper) - 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴. 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해주는 패턴
- 브리지 패턴(Bridge) - 구현부에 추상층을 분리하여 각자 독립적으로 변형할 수 있도록 하는 패턴
- 컴포지트 패턴(Composite) - 객체들의 관계를 트리 구조로 구성하여 부분 - 전체 계층을 표현하는 패턴. 사용자가 단일, 복합객체 모두 동일하게 다루도록 하는 패턴
- 데코레이터 패턴(Decorator) - 주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴. 기능확장이 필요할 때 서브클래스 대신 쓸 수 있는 대안이 되는 패턴
- 퍼사드 패턴(Facade) - 서브시스템에 있는 인터페이스 집합에 통합된 하나의 인터페이스 제공. 서브시스템을 좀 더 쉽게 사용하기 위해 고수준의 인터페이스를 정의
- 프록시 패턴(Proxy) - 어떤 다른 객체로 접근하는 것을 통제하기 위해 그 객체의 매니저 또는 자리 채움자를 제공하는 패턴
행위 패턴(Behavioral Patterns)
- 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴
- 한 객체가 혼자 수행할 수 없는 작업을 여러개의 객체로 어떻게 분배하는지, 또 그렇게 하면서 객체 사이의 결합도를 최소화하는것에 중점을 두는 방식
- 옵저버 패턴(Observer) - 객체들 사이에 1:N 의 의존관계를 정의하여 어떤 객체의 상태가 변할 때, 의존관계에 있는 모든 객체들이 통지받고 자동으로 갱신될 수 있게 만드는 패턴
- 상태 패턴(State) - 객체의 내부 상태가 변경될 때 행동을 변경하도록 허락. 객체는 자신의 클래스가 변경되는 것처럼 보인게 된다
- 스트레이트지 패턴(Strategy) - 동일 계열의 알고리즘들을 정의하고, 각각 캡슐화하며 이들을 상호교환 가능하도록 만드는 것. 알고리즘을 사용하는 사용자로부터 독립적으로 알고리즘이 변경될 수 있도록 하는 패턴
- 템플릿 패턴(Template) - 객체의 연산에서 알고리즘의 뼈대만 정의, 나머지는 서브클래스에서 이루어지게 하는 패턴. 템플릿 패턴은 알고리즘의 구조는 변경하지 않고 알고리즘의 각 단계를 서브클래스에서 재정의 한다
- 비지터 패턴(Visitor) - 객체구조를 이루는 원소에 대해 수행할 연산을 표현. 방문자는 연산에 적용할 원소의 클래스를 변경하지 않고 새로운 연산을 재정의 할 수 있다
- 역할 사슬 패턴(Chain of Responsibility) - 요청을 처리하는 기회를 하나 이상의 객체에 부여하여 요청을 보내는 쪽과 받는 쪽의 결합을 피하는 패턴. 요청을 받는 객체를 연쇄적으로 묶고 객체를 처리할 수 있을 때까지 요청을 전달
- 커맨드 패턴(Command) - 요청을 객체로 캡슐화하여 서로 다른 사용자의 매개변수화, 요청 저장 또는 로깅, 연산의 취소를 지원하게 만드는 패턴
- 인터프리터 패턴(Interpreter) - 주어진 언어에 대해서 문법을 위한 표현수단을 정의하고, 해당 언어로 된 문장을 해석하는 해석기를 사용하는 패턴
- 이터레이터 패턴(Iterator) - 내부 표현부를 노출하지 않고 어떤 객체 집합의 원소들을 순차적으로 접근할 수 있는 방법을 제공하는 패턴
- 미디에이터 패턴(Mediator) - 한 집합에 속해있는 객체들의 상호 작용을 캡슐화하는 객체를 정의하는 패턴. 중재자는 객체들이 직접 서로 참조하지 않도록함으로 객체들간의 느슨한 연결을 촉진시키며 객체들의 상호작용을 독립적으로 다양화 시킬 수 있게한다.
728x90
'Computer > DesignPattern' 카테고리의 다른 글
1. 싱글톤 패턴(Singleton_Pattern) (0) | 2023.01.31 |
---|