본 내용은 10분 테코톡 포모님의 강의를 토대로 작성하였습니다.
1. 디자인 패턴
- 반복적으로 나타난 문제에 대해 그것을 해결한 경험 및 노하우를 축적하여 재이용하기 좋은 형태로 이름을 붙여 해법을 제시하는 패턴 양식
2. GOF 디자인 패턴
- 23가지의 디자인패턴을 목적에 따라 세가지 유형으로 분류
생성 패턴
- 객체 생성과 관련된 패턴
추상 팩토리 패턴, 빌더 패턴, 팩토리 메서드 패턴, 프로토타입 패턴, 싱글톤 패턴
구조 패턴
- 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴
어댑터 패턴, 브리지 패턴, 컴포지트 패턴, 데코레이터 패턴, 파사드 패턴, 플라이웨이트 패턴, 프록시 패턴
행위 패턴
- 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴
책임 체인 패턴, 커맨드 패턴, 인터프리터 패턴, 중재자 패턴, 메멘토 패턴, 옵저버 패턴, 상태 패턴, 전략 패턴, 템플릿 메서드 패턴, 방문자 패턴
3. 상태 패턴
- 객체 자신의 내부 상태에 따라 행위를 변경하도록 하는 패턴
- 객체의 특정 상태를 클래스로 선언
- 해당 상태에서 할 수 있는 행위를 메소드로 정의
- 상태 클래스를 인터페이스로 캡슐화하여 클라이언트에서 인터페이스로 호출하는 방식
사용하는 경우
- 객체의 행동이 상태에 따라 달라질 수 있고 객체의 상태에 따라 런타임에 행동이 바뀌어야 함
- 다중 분기 조건 처리가 너무 많이 들어있을 때
- 객체의 상수를 표현하기 위해, 나열형 상수(Enum)으로 정의
효과
- 상태에 따른 행동을 국소화하며 서로 다른 상태에 대한 행동을 별도의 객체로 관리
- 새로운 상태가 추가되더라도 Context 코드가 받는 영향이 적다.
- 상태가 증가하여도 코드 복잡도가 증가하지 않아 유지 보수가 용이
- 상태 전이를 명확하게 만듦
- 상태에 따른 동작을 구현한 코드를 수정하기 쉬움
Reference
'programming study > Computer Science' 카테고리의 다른 글
Hash Table (0) | 2021.11.25 |
---|---|
Caching(캐싱) (0) | 2021.08.03 |
Array (0) | 2021.07.18 |
Process vs Thread (0) | 2021.07.17 |
TDD와 단위테스트 (0) | 2021.07.14 |