[정보처리기사 실기] GOF(Gang of Four) 디자인패턴
안녕하세요 에이블러여러분
이번엔 디자인패턴 GOF 개념입니다
필기할때 외우느라 힘들었던 기억이 있는데
완벽하게 리셋되었네용 ㅎ
실기는 더 정확하게 외워야할 거 같은데 이걸 어쩌
디자인 패턴은 소프트웨어 디자인에서 자주 발생하는 문제를 해결하기 위한 해결책의 재사용 가능한 설계입니다. GOF(Gang of Four) 디자인 패턴은 "Design Patterns: Elements of Reusable Object-Oriented Software"라는 책에서 소개된 23가지의 디자인 패턴을 의미합니다. 이들 패턴은 크게 생성(Creational), 구조(Structural), 행위(Behavioral) 세 가지 카테고리로 나뉩니다.
생성(Creational) 디자인 패턴:
- 싱글톤(Singleton) 패턴: 클래스의 인스턴스가 오직 하나만 생성되도록 보장하고, 그 인스턴스에 대한 전역적인 접근점을 제공합니다.
- 팩토리 메서드(Factory Method) 패턴: 객체 생성을 하위 클래스에 위임하여 구체 클래스를 결정하는 것을 서브 클래스에게 맡깁니다.
- 추상 팩토리(Abstract Factory) 패턴: 관련 객체들의 집합을 생성하는 인터페이스를 제공하고, 이를 이용하여 서로 다른 구현체를 생성합니다.
- 빌더(Builder) 패턴: 복잡한 객체를 생성하는 과정을 캡슐화하여 동일한 생성 과정에서 서로 다른 표현을 만들 수 있도록 합니다.
- 프로토타입(Prototype) 패턴: 생성할 객체의 유형을 명시하는 인스턴스로부터 객체를 복제하여 새로운 객체를 생성합니다.
구조(Structural) 디자인 패턴:
- 어댑터(Adapter) 패턴: 호환되지 않는 인터페이스를 함께 동작할 수 있도록 변환해줍니다.
- 브리지(Bridge) 패턴: 추상화와 구현을 분리하여 각각을 독립적으로 변경할 수 있도록 합니다.
- 컴퍼지트(Composite) 패턴: 개별 객체와 복합 객체를 동일한 인터페이스로 처리하여 트리 구조를 구성합니다.
- 데커레이터(Decorator) 패턴: 객체의 기능을 동적으로 확장할 수 있도록 합니다.
- 퍼사드(Facade) 패턴: 복잡한 서브 시스템에 대한 단일 인터페이스를 제공하여 사용을 단순화합니다.
- 플라이웨이트(Flyweight) 패턴: 객체를 공유하여 메모리 사용량을 최적화합니다.
- 프록시(Proxy) 패턴: 다른 객체에 대한 접근을 제어하거나 대리할 수 있는 객체를 제공합니다.
행위(Behavioral) 디자인 패턴:
- 책임 연쇄(Chain of Responsibility) 패턴: 요청을 처리할 수 있는 객체의 연결을 만들어 처리자를 찾아 전달합니다.
- 커맨드(Command) 패턴: 요청을 객체로 캡슐화하여 사용자가 보낸 요청을 나중에 실행하거나 취소할 수 있도록 합니다.
- 인터프리터(Interpreter) 패턴: 언어의 문법 규칙을 나타내는 클래스를 생성하고, 해당 언어의 표현을 해석하는 방법을 제공합니다.
- 반복자(Iterator) 패턴: 객체 집합을 순차적으로 접근할 수 있는 방법을 제공합니다.
- 중재자(Mediator) 패턴: 객체 간의 상호작용을 캡슐화하여 객체 간의 결합을 낮춥니다.
- 메멘토(Memento) 패턴: 객체의 상태를 저장하고 복원할 수 있는 메커니즘을 제공합니다.
- 옵저버(Observer) 패턴: 객체 간의 일대다 의존 관계를 정의하고, 객체의 상태 변화에 대한 통지 메커니즘을 제공합니다.
- 상태(State) 패턴: 객체의 내부 상태가 바뀜에 따라 객체의 행동을 변경할 수 있도록 합니다.
- 전략(Strategy) 패턴: 알고리즘을 캡슐화하여 동적으로 교체할 수 있도록 합니다.
- 템플릿 메서드(Template Method) 패턴: 알고리즘의 뼈대를 정의하고, 일부 단계를 서브 클래스로 분리하여 구현합니다.
- 비지터(Visitor) 패턴: 객체 구조를 변경하지 않고, 객체의 연산을 수행하는 방법을 제공합니다.
GOF의 디자인 패턴은 소프트웨어 개발에서 자주 발생하는 다양한 문제를 해결하기 위한 강력한 도구입니다. 이러한 패턴들을 잘 활용하면 유연하고 확장 가능한 소프트웨어를 개발할 수 있습니다.
디자인패턴을 통해 소프트웨어 설계의 다양한 측면에서의 문제를 해결하는데 도움을 주고,
코드의 유연성과 재사용성이 향상!
'KT에이블스쿨 5기 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 실기] OSI 7계층,TCP/UDP 차이 (0) | 2024.04.15 |
---|---|
[정보처리기사 실기] 정규화와 이상현상 (도부이결다조/삽살개) (1) | 2024.04.14 |
[정보처리기사 실기] 객체지향설계 SOLID 5가지 원칙 (0) | 2024.04.14 |
[정보처리기사 실기] redo와 undo +은행거래예시 (0) | 2024.04.14 |
[정보처리기사 실기] CRUD - Create(생성), Read(읽기), Update(갱신), Delete(삭제) (0) | 2024.04.14 |