디자인 패턴이란 모듈 설계 시 참조할 수 있는 예제를 의미합니다. GoF(Gang of Four)라고 불리는 네 사람, 에릭 감마, 리차드 헬름, 랄프 존슨, 존 블리시디스가 1995년 처음으로 구체화 및 체계화하였습니다. GoF의 디자인 패턴은 ★ 생성 패턴, 구조 패턴, 행위 패턴으로 구분됩니다.
디자인 패턴의 구성은 다음과 같습니다.
- 문제 및 배경
- 사례
- 샘플 코드 등
생성 패턴
GOF의 디자인 패턴 | 설명 | |
빌더 | Builder | 인스턴스를 조합하여 객체를 생성한다 |
프로토타입 | Prototype | 원형을 두고 복제만 하여 객체를 생성한다 |
팩토리 메소드 | Factory Method | 상위 클레스에서 인터페이스를 정의하고 서브 클래스에서 실제 객체 생성을 담당한다 |
추상 팩토리 | Abstract Factory | 객체들을 그룹으로 생성하여 추상적으로 표현한다 |
싱글톤 | Singleton | 클래스 내에서 객체는 누구나 사용할 수 있지만 하나 뿐이다 |
구조 패턴
GOF의 디자인 패턴 | 설명 | |
어댑터 | Adapter | 호환성 없는 클래스 간 인터페이스를 맞춰준다 |
브리지 | Bridge | 구현부(구현)와 추상층(기능)을 분리한 후 이어준다 |
컴포지트 | Composite | 복합 객체와 단일 객체를 합성하여 구분 없이 사용한다 |
데코레이터 | Decorator | 객체에 다른 객체를 덕지덕지 추가하여 기능을 확장한다 |
퍼싸드 | Facade | 외부에 인터페이스를 둠으로써 복잡한 서브 클래스의 기능을 간편하게 사용한다 |
플라이웨이트 | Flyweight | 부담을 가볍게 하기 위해 인스턴스를 최대한 공유하여 메모리를 절약한다 |
프록시 | Proxy | 접근이 어려운 객체에 인터페이스를 둠으로써 접근을 대리(Proxy)해서 처리해준다 |
행위 패턴
GOF의 디자인 패턴 | 설명 | |
책임 연쇄 | Chain of Responsibility | 한 객체가 요청을 처리하지 못하면 다음 객체가 이어 받는다 |
커맨드 | Command | 각종 명령어들을 캡슐화하여 합쳐두어 관리한다 |
인터프리터 | Interpreter | 언어 문법을 정의할 때 사용 |
반복자 | Iterator | 접근이 잦은 객체에 대해 동일한 인터페이스를 두어 반복하여 사용한다 |
중재자 | Mediator | 수많은 객체들 사이를 중재해주기 위해 복잡한 상호작용을 캡슐화한다 |
메멘토 | Memento | 특정 시점의 객체 상태를 기억했다가 되돌린다 |
옵서버 | Observer ★ | 객체 상태의 변화를 지켜보고 있다가 변화하면 다른 객체들에게 알려준다 |
상태 | State | 객체의 상태에 따라 동일한 동작에 대해 처리 방법을 달리한다 |
전략 | Strategy | 동일한 계열의 전략(알고리즘)들을 각각 캡슐화하고 원하는 전략을 선택하여 쓴다 |
템플릿 메소드 | Template Method | 상위 클래스에서 골격(템플릿)을 정하고, 하위 클래스에서 처리(메소드)를 구체화한다 |
방문자 | Visitor | 각 클래스에 기능을 분담시키고, 클래스를 방문함으로써 기능들을 수행한다 |
728x90
반응형