[정처기 필기] 디자인 패턴
by 볼빵빵오춘기디자인 패턴
디자인 패턴은 자주 사용하는 설계 형태를 정형화하여 유형별로 설계 템플릿을 만들어 두고 SW 개발 중 나타나는 과제를 해결하기 위한 방법 중 한가지이므로 개발 프로세스를 무시할 수 없다.
생성, 구조, 행위 패턴으로 나뉜다.
(=> 구조 행위 생성 패턴이 있는데 이거 다 못외울것같으니 문제에 나오면 단어보고 어디에 속할지 생각하고 단어 보면서 유추하기)
디자인 패턴 사용할 때 장단점
장점
- 개발자 간의 원활한 의사소통을 지원한다.
- SW 구조 파악이 쉽다.
- 재사용을 통한 개발 시간 단축할 수 있다.
- 객체지향 설계 및 구현의 생산성을 높이는 데 적합하다.
- 디자인 패턴은 자주 사용하는 설계 형태를 정형화하여 유형별로 설계 템플릿을 만들어 두고 SW 개발 중 나타나는 과제를 해결하기 위한 방법 중 한 가지이므로 개발 프로세스를 무시할 수 없다.
단점
- 객체지향 설계/구현 위주로 사용된다.
- 초기 투자 비용 부담이 된다.
생성 패턴
- 객체를 생성하는 것과 관련된 패턴이다.
- 객체의 생성과 변경이 전체 시스템에 미치는 영향을 최소화하도록 만들어주어 유연성을 높일 수 있고 코드를 유지하기가 쉬운 편이다.
- 객체의 생성과 참조 과정을 추상화함으로써 시스템을 개발할 때 부담을 덜어준다.
싱글톤 패턴(Singleton) | 클래스의 인스턴스가 하나임을 보장하고 접근할 수 있는 전역적인 접근점을 제공하는 패턴 |
추상화 패턴 (Abstract Factory) |
구체적인 클래스를 지정하지 않고 관련성이 있거나, 독립적인 객체들을 생성하기 위한 인터페이스를 제공하는 패턴 |
빌더 패턴(Builder) | 객체의 생성과정과 표현과정을 분리시켜 동일한 생성과정에서 다양한 표현을 생성할 수 있는 패턴 |
팩토리 메서드 패턴 (Factory Method) |
객체를 생성하는 인터페이스를 정의하지만, 인스턴스를 만드는 클래스는 서브클래스에서 결정하도록 하는 패턴 |
프로토타입 패턴 (Prototype) |
기존의 객체를 응용해서 새로운 객체를 만들 때 유용한 패턴 |
구조 패턴
- 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴이다.
- 복잡한 형태의 구조를 갖는 시스템을 개발하기 쉽게 만들어주는 패턴이다.
- 새로운 기능을 가진 복합 객체를 효과적으로 작성할 수 있다.
어댑터(Adapter) | 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴 |
브리지(Bridge) | 구현부에 추상층을 분리하여 각자 독립적으로 변형할 수 있도록 하는 패턴 |
데코레이터(Decorator) | 주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴 |
퍼사드(Facade) | 복잡한 서브 시스템의 의존성을 최소화하기 위한 목적을 가지는 패턴 |
프록시(Proxy) | 다른 객체로 접근하는 것을 통제하기 위해 그 객체의 매니저 또는 자리 채움자를 제공하는 패턴 |
플라이웨이트 (Flyweight Patterns) |
객체를 가볍게 만들어 메모리 사용을 줄인다는 목적을 가지는 패턴 |
컴포지(Composie) | 클라이언트가, 그룹 전체와 개별 객체를 동일하게 처라할 수 있도록 하는 패턴 |
행위 패턴
- 반복적으로 사용되는 객체들의 상호작용을 패턴화한 것으로, 클래스나 객체들이 상호작용하는 방법과 책임을 분산하는 방법을 정의한다.
- 메세지 교환과 관련된 것으로, 객체 간의 행위나 알고리즘 등과 관련된 패턴을 말한다.
옵저버(Observer) | 의존관계에 있는 모든 객체들이 통지받고 자동으로 갱신될 수 있게 만드는 패턴 |
상태(State) | 객체 내부 상태 변경에 따라 객체의 행동이 변하는 패턴 |
스트레이트지(Strategy) | 알고리즘을 사용하는 사용자로부터 독립적으로 알고리즘이 변경될 수 있도록 하는 패턴 |
템플릿(Template) | 객체의 연산에서 알고리즘의 뼈대만 정의하고, 나머지는 서브클래스에서 이루어지게 하는 패턴 |
비지터(Visitor) | 비지니스 로직을 객체 구조에서 분리시키는 디자인 패턴 |
책임연쇄 (Chain of Responsibility) |
요청을 처리하는 기회를 하나 이상의 객체에 부여하여 요청을 보내는 쪽과 받는 쪽의 결합을 피하는 패턴 |
커맨드(Command) | 요청을 객체로 캡슐화하여 서로 다른 사용자의 매개변수화, 요청 저장 또는 로깅, 연산의 취소를 지원하게 만드는 패턴 |
인터프리터(Interpreter) | 주어진 언어에 대해서 문법을 위한 표현수단을 정의하고, 해당 언어로 된 문장을 해석하는 해석기를 사용하는 패턴 |
이터레이터(Iterator) | 내부 표현부를 노출하지 않고 어떤 객체 집합의 원소들을 순차적으로 접근할 수 있는 방법을 제공하는 패턴 |
미디에이터(Mediator) | 한 집합에 속해있는 객체들의 상호 작용을 캡슐화하는 객체를 정의하는 패턴 |
메멘토(Memento) | 객체의 상태정보를 가지는 클래스를 따로 생성하여 객체 내부의 상태를 외부에 저장해놓고 정보를 복원시킬 수 있도록 해주는 패턴 |
'📚 자격증 > 정처기' 카테고리의 다른 글
[정처기 필기] 개념 모델링, UML, 유스케이스, 럼바우 기 (0) | 2023.07.11 |
---|---|
[정처기 필기] EAI, FEP, DBMS 분석 시 고려사항, 요구사항 분석/검증방법 (0) | 2023.07.11 |
[정처기 필기] 애자일 개발 방법론 종류, XP, SCRUM (0) | 2023.07.10 |
[정처기 필기] 재공학, 리팩토링, CASE, 공통 모듈 명세 작성원칙 (0) | 2023.07.10 |
정보처리기사 필기 실기 자격요건 시험과목 (0) | 2023.07.10 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기