객체지향 5대 원칙
SOLID
SRP - 단일 책임의 법칙 : 클래스는 단 하나의 책임만을 가져야 한다.
OCP - 개방 폐쇄의 법칙 : 수정에는 닫혀있고 확장에는 열려있어야한다.
LSP - 리스코프의 치환법칙 : 자식은 부모로 대체 가능해야한다.
ISP - 인터페이스 분리의 법칙 : 범용 인터페이스 보다는 세분화된 인터페이스가 낫다.
DIP - 의존 관계역전의 법칙 : 구체 클래스에 의존하지 말고 인터페이스에 의존해라.
디자인 패턴
생성 (5)
Singleton : 하나의 클래스로 어디서든 접근 가능한 객체
Abstract Factory : 추상적인 부품을 통한 추상적 제품의 조립 (팩토리도 인터페이스 기반으로 만들자)
Factory Method : 변하지 않는 것은 부모가, 변하는것(객체생성이라) 자식이 오버라이딩
Builder : 동일한 공정에 다른 표현을 가진 객체 생성
Prototype : 복사본(clone) 을 통한 객체 생성
구조 (7)
Adapter : 인터페이스 변경을 통해 다른 클래스 처럼 보이기
Bridge : 확장 용이성을 위한 계층의 분리
Proxy : 기존 요소를 대신하기 위한 클래스(대리자)
Remote : 원격 객체를 대신
Virtual : 기존 객체의 생성 비용이 클 때
Protection : 기존 객체에 대한 접근 제어.
Facade : 하위 시스템 단순화하는 상위 시스템
Composite : 복합객체를 만들기 위한 패턴
Decorator : Composite와 같은데 기능의 확장
Flyweight : 동일한 속성을 가진 객체는 공유
행위 (11)
Iterator : 열거. 복합객체의 내부구조와 관계없이 동일한 구조로 열거 (Iterable, Iterator<T>)
Visitor : 복합객체 요소의 연산을 수행
Observer : 하나의 사건 발생 시 등록된 여러 객체에 전달
State : 상태에 따른 동작의 변화
Chain of Responsibility : 사건 발생 시 첫번째 객체가 처리 불가 시 다음으로 전달
Mediator : M:N 의 객체관계를 객체와 중재자 간의 1:1 관계로 단순화
Template Method : 변하지 않는것은 부모가, 변하는 것은 자식이 오버라이딩
Strategy : 알고리즘의 변화를 인터페이스기반의 클래스로 분리
Memento : 캡슐화를 위반하지 않고 객체의 상태를 저장 및 복구
Command : 명령의 캡슐화를 통한 Redo/Undo Macro
Interpreter : 간단한 언어를 설계하고 언어 해석기를 만들어 사용
'java > design_pattern' 카테고리의 다른 글
DDD Start 요약. 도메인 주도 설계 구현과 핵심 개념익히기 (0) | 2019.06.10 |
---|---|
객체지향적 사고를 가져야 하는 이유 (0) | 2016.02.05 |
Facade Pattern - 퍼사드 패턴 (0) | 2014.07.01 |
Bridge Pattern - 브릿지 패턴 (0) | 2014.07.01 |
Memento Pattern - 메멘토 패턴 (0) | 2014.07.01 |