카테고리 없음
[정보처리기사] 디자인 패턴
아놀드금자
2023. 4. 21. 04:05
728x90
세부적인 구현 방안을 설계할 때 참조할 수 있는 전형적인 해결방식
GoF가 처음으로 구체화 및 체계화 함
생성패턴 5개, 구조패턴 7개, 행위패턴 11개
장점: 구조파악 용이, 생산성 높음, 비용 절약
아키텍처 패턴 vs 디자인 패턴
- 아키텍처 패턴이 디자인 패턴보다 상위 수준의 설계에 사용
- 아키텍처: 전체 시스템 구조 설계
- 디자인: 서브시스템에 속하는 컴포넌트 등...
생성 패턴 Creational Pattern
객체의 생성과 참조 과정을 캡슐화
객체 생성, 변경에도 프로그램의 구조에 영향을 크게 받지 않도록 함(유연성)
추상 팩토리 Abstract Factory |
- 클래스에 의존 X - 인터페이스를 통해 서로 의존하는 객체들의 그룹 생성 -> 추상적 - 연관된 서브클래스를 한 번에 교체 가능 |
빌더 Builder |
- 작은 인스턴스를 건축하듯이 조합(build) - 생성과정 / 표현방법 분리 -> 동일한 객체 생성에도 다른결과 가능 |
팩토리 메소드 Factory Method |
- 상위 클래스에서 인터페이스만 정의 - 서브 클래스가 실제 객체생성 담당 -가상 생성자(Virtual Constructor) 패턴이라고도 함 |
프로토타입 Prototype |
- 원본 객체를 복제하는 방법으로 생성 |
싱글톤 Singleton |
- 클래스 내에서 인스턴스가 하나뿐임을 보장 - 불필요한 메모리낭비X |
구조 패턴 Structural Pattern
클래스나 객체를 조합하여 더 큰 구조로 만들 수 있음
복잡한 구조의 시스템 개발이 쉬워짐
어댑터 Adapter |
- 호환성이 없는 클래스의 인터페이스들을 다른 클래스가 이용가능하도록 변환(like 어댑터) - 인터페이스가 일치하지 않을 때 이용 |
브리지 Bridge |
- 기능과 구현을 별도 클래스로 분리하여 구현 - 구현부에서 추상층을 분리, 서로가 독립적으로 확장 가능 |
컴포지트 Composite |
- 복합객체와 단일 객체를 구분 없이 다루고자 할때 - 복합객체 안에 복합객체 구조 표현 가능 |
데코레이터 Decorator |
- 객체 간 결합 통해 능동적으로 기능 확장가능 - 덧붙이는 방식 |
퍼싸드 Facade |
- 복잡한 서브클래스들을 피해 더 상위에 인터페이스 구현 -> 간편사용가능 - 통합인터페이스 제공하는 Wrapper 객체 필요 |
플라이웨이트 Flyweight |
- 가능한 것들 끼리는 서로 공유해서 메모리를절약 |
프록시 Froxy |
- 접근이 어려운 객체 - 연결하려는 객체 사이에서 인터페티스 역할 - 네트워크 연결, 메모리의 대용량 객체로의 접근 등에 이용 |
행위 패턴 Behavioral Pattern
클래스, 객체들이 서로 상호작용하는 방법, 책임 분배 방법을 정의
하나의 객체로 수행할 수 없는 작업을 여러 객체로 분배하면서 결합도를 최소화 함
책임 연쇄 Chain of Responsibility |
- 체인처럼 한 객체가 처리하지 못하면 다음 객체로 책임이 넘어가는 형태 |
커맨드 Command |
- 요청을 캡슐화 하여 재이용, 취소할 수 있도록 정보를 저장하거나 로그에 남긴다 - 각종 명령어들을 추상 클래스와 구체 클래스롤 분리하여 단순화 한다. |
인터프리터 Interpreter |
- 언어 문법표현을 정의 - SQL이나 통신 프로토콜 |
반복자 Iterator |
- 자료구조 같이 접근이 잦은 객체에 대해 동일한 인터페이스 - 내부 노출 없이 순차, 순회 접근 가능 |
중재자 Mediator |
- 객체 간 직접 상호작용을 제한하고 중재자 객체를 통해서만 협력 - 객체간 의존성을 줄요 결합도를 감소시킴 |
메멘토 Memento |
- 특정시점의 내부를 객체화 하여 이후 요청에 따라 이전시점으로 복원 가능 |
옵저버 Observer |
- 어떤 객체의 변화를 다른객체에게 전해줌 |
상태 State |
- 객체의 상태에 따라 동일한 동작을 다르게 처리해야 할 때 - 객체상태를 캡슐화 하고 이를 참조하는 방식 |
전략 Strategy |
- 동일한 계열의 알고리즘들을 캡슐화 -> 얘네끼리는 상호교환 가능 |
템플릿 메소드 Template Method |
- 상위클래스(부모)에서 골격 정의, 하위 클래스에서 세부 처리 구체화 - 유사한 서브 클래스를 묶어 공통된 내용을 상위클래스에서 정의 |
방문자 Visitor |
- 각 기능을 객체로부터 분리 - 각 클래스를 방문하여 기능 수행 |
728x90