생성패턴(Creational Pattern)
인스턴스를 만드는 절차를 추상화하는 패턴, 객체를 생성/합성하는 방법이나 객체의 표현 방법과 sw시스템을 분리해준다.
- 클래스 생성 패턴 : 인스턴스로 만들 클래스를 다양하게 만들기 위한 용도로 상속을 사용
- 객체 생성 패턴 : 인스턴스화 작업을 다른 객체에게 떠넘김
- 특징
-
시스템이 어떤 구체 클래스를 사용하는지에 대한 정보를 캡슐화한다.
-
클래스의 인스턴스들이 어떻게 만들고 어떻게 서로 맞붙는지에 대한 부분을 완전히 숨긴다.
⇒ 무엇이 생성되고, 누가 생성하고, 어떻게 생성되는지, 언제 생성되는지 결정에 대한 유연성 확보
- 종류
- 팩토리 메서드 : 상위 클래스는 인터페이스 정의, 객체 생성은 하위 클래스
- 추상팩토리 : 하위클래스에 의존하지 않는 형태
- 싱글톤 : 하나의 인스턴스 만을 가짐
- 프로토타입 : 원본 객체를 복제
- 빌더 : 객체의 생성 과정과 표현 방법을 분리
행위 패턴
클래스나 객체들이 서로 상호작용하는 방법, 주로 여러 객체로 분리해 결합도를 낮춤
- 종류
- 인터프리터 : 맞춤법 검사
- 템플릿 메서드 : 팩토리 메서드와 유사
- 커맨드 : 명령어를 객체 형태로 캡슐화 → 요청 필요 정보 저장 or 로그에 기록
- 반복자 : 접근 자주하는 객체에 동일한 인터페이스를 사용(순차적 접근)
- 중재자 : 많은 객체들 사이 상호작용 캡슐화 → 의존성 줄여 결합도 감소
- 메멘토 : 내부 상태를 특정 시점에 객체화, 필요에 따라 되돌림
- 옵저버 : 객체 상태를 관측하다 변화하면 상속되어있는 다른 객체에 상태 전달
- 상태 : 객체 상태에 따른 동작
- 전략 : 동일 계열 알고리즘 개별적으로 객체화하여 상호교환
- visitor : 데이터 구조와 기능을 분리, 각 클래스를 방문하여 기능 수행
- chain of responsibility : 요청이 해결될 때까지 다음 체인으로 책임을 넘기는 패턴
구조 패턴
클래스, 객체들간의 관계나 인터페이스를 개선하거나 결합하여 더 큰 구조를 만드는 패턴
- 종류
- 어댑터 : 호환성이 없는 인터페이스를 변환
- 파사드 : 서브 클래스들 상위에 Wrapper 객체(통합 인터페이스 제공)를 구성→서브 클래스 기능 이용
- 브릿지 : 기능과 구현을 별로 클래스로 분리
- 컴포지트 : 단일 객체와 복합 객체를 구분 없이 다룸, 트리구조
- 데코레이터 : 다른 객체를 덧붙여 확장
- 플라이웨이트 : 객체를 가능한 공유해 사용 → 메모리 절약
- 프록시 : 접근 어려운 객체 사이 인터페이스 역할