[1] 디자인 패턴의 대한 정의
2023. 7. 16. 16:36ㆍcs및 소프트스킬/디자인 패턴
728x90
반응형
SMALL
1. 디자인 패턴
- 주로 객체지향 프로그래밍을 설계 할 때 쓰이는 기법 중 하나로 의사 소통의 일종을 역할
- 프로그램 설계 시 발생한 문제점들을 객체 간 상호 관계 등 이용하여 해결할 수 있도록 하나의 "규약" 형태
2. 디자인 패턴의 종류
(1) 생성 패턴(추상 객체 인스턴스화)
- 추상 팩토리(Abstract Factory) : 각 종 서브 클래스를 특정 그룹으로 묶어 한번에 교체
- 팩토리(Factory Method) : 객체 생성 후 Return 함수 (생성자 대신) 제공하여 초기화 과정을 외부에 못보게 하여 숨기는 타입
- 빌더(Builder) : 인스턴스를 생성자를 통해 생성 하지 않고, 빌더에서 내부 클래스를 간접적으로 생성하는 방식
- 프로토타입 : 원본 만들어 놓고, 원본 객체를 그대로 복사하는 방식
- 싱글톤(Singleton) : 클래스 내부에서 인스턴스가 단 하나뿐인 메소드 (주로 생성자를 private로 넣고, 메서드를 통해 인스턴스 접근)
(2) 구조 패턴(객체 결합)
- 어댑터(Adapter) : 본인 코드 및 레거시 인터페이스와 타 인터페이스를 연결하는 중계기 역할하는 패턴
- 브리지(Bridge) : 상위 클래스에서 하위 클래스로 계층적으로 연결하는 클래스 (React에서 컴포넌트를 나눌 때 주로 사용하는 방식)
- 컴포지트(Composite) : 객체 관계를 트리 구성으로 부분-전체 계층을 표현
- 데코레이터(Decorator) : 대상 객체의 기능 확장 및 변경 필요시 객체 결합을 통해 서브클래싱을 대신해서 쓸 수 있는 유연한 패턴, 서로 다른 인터페이스 2개를 1개의 인터페이스로 만들어서 표
- 파사드(Facade) : 복잡한 호출 과정을 대신 처리, 하나의 인터페이스를 하위 인터페이스를 각각 만들어 비슷한 메소드를 다른 메소드를 처리하는 형태
- 플라이웨이트(Fly Weight) : 내부 클래스의 한개의 인스턴스로 여러개의 가상 인터페이스를 공유할 때 쓰
- 프록시(Proxy) : Nginx 에서 각각의 포트 및 URL을 포워딩 한 형태와 유사한 구조로, 다른 무언가와 이어지는 인터페이스이다.
(3) 행위 패턴(객체 간 커뮤니케이션)
- 책임 체인(Chain of Responsibility) : 각각 인스턴스들이 체인처럼 연결되어 있는 형태, 1단계부터 5단계까지 처리 시 인스턴스 단계별로 처리하는 행위를 말한다.
- 커맨드(Command) : 명령 요청을 객체 형태로 캡슐화 후 사용자가 보낸 요청을 나중에 매개변수 및 메서드 이름 등 필요 정보를 로깅 혹은 저장을 할 수 있음, 하나의 객체가 타 객체의 메소드를 요청을 할 수 있다 (리모컨 제어로 생각)
- 인터프리터(interpreter) : 반복되는 문제 패턴을 언어 혹은 문법으로 정의하고 확
- 반복자(iterator) : Java의 Iterator 인터페이스에 적용하는 패턴 중 하나로 각각 반복적인 객체를 Iterator의 인터페이스에 저장된 것을 활용하는 패턴
- 중재자(Mediator) : 객체안에서 서로 다른 객체들을 캡슐화하여 객체들이 더 이상 직접적으로 상호작용하지않고 중재자를 통해서만 커뮤니케이션함
- 메멘토(mement) : 객체를 이전 상태로 되돌릴 수 있는 기능을 제공하는 패턴, 롤백을 통한 실행 취소
- 옵저버(Observer) : 여러 객체들이 하나의 객체를 '관찰'하는 패턴을 만들어 중점이 되는 개체가 변화할 때 그 변화를 연결된 여러 옵저버들에게 전달하는 패턴
- 상태(State) : 객체의 내부 상태에 따라 스스로 행동을 변경할 수 있게 허가하는 패턴
- 전략(Strategy) : 객체가 할 수 있는 행위들 각각을 전략으로 만들어 놓고, 동적으로 행위의 수정이 필요한 경우 전략을 바꾸는 것만으로 행위의 수정이 가능하도록 만드는 패
- 템플릿 메소드(Template Method) : 부모 클래스에서 알고리즘의 골격을 정의하지만, 해당 알고리즘의 구조를 변경하지 않고 자식 클래스들이 알고리즘의 특정 단계들을 오버라이드(재정의)할 수 있도록 하는 패
- 방문자(visit) : 데이터 구조와 처리를 분리하는 패턴
728x90
반응형
LIST
'cs및 소프트스킬 > 디자인 패턴' 카테고리의 다른 글
[3] 디자인 패턴 - 팩토리 패턴(Factory Pattern) (0) | 2023.07.22 |
---|---|
[2] 디자인패턴 - 싱글톤 패턴(Singleton Pattern) (0) | 2023.07.16 |