해결하고자 하는 문제:
어떻게 :
장점 :
단점 :
관련 SOLID :
해결하고자 하는 문제 :
기능 계층과 구현 계층의 분리 ( extends와 Implementation의 차이를 생각 )
구현 계층 :
⇢ 껍데기는 그대로 두고, 내용물만 바꾼다는 느낌??
기능 계층 :
⇢ 실제로 새로운 기능을 추가하여 클래스를 좀 더 특수하게 만드는 것??
어떻게 :
장점 :
단점 :
관련 SOLID :
해결하고자 하는 문제 : 담을 것과 담길 것에 같은 Operation을 취하고 싶다. ( 파일과 디렉토리는 서로 다르지만, 둘다 "용량 구하기" 같은 operation을 취할 수 있다.)
어떻게 :
장점 :
단점 :
관련 SOLID :
해결하고자 하는 문제 : 공통적인 부분들에 대한 중복 때문에 memory 효율이 좋지 못할 경우, 공통되는 부분들은 1개만 만들어서 공유 하도록 하자! (즉, 최적화를 위한 패턴임!)
어떻게 :
Extrinsic State : 각 인스턴스마다 고유한 값들
Intrinsic State : 변하지 않는 공통적인 필드
Intrinsic State를 분리하되, Immutable하게 분리한다.
팩토리 클래스를 정의해서 새로운 인스턴스를 생성하고자 할 때, Extrinsic한 값들은 인스턴스별로 고유하게 가지도록 하고, Intrinsic한 값들은 기존에 존재하는 값을 사용하도록 즉, 공유 할 수 있도록 한다.
장점 :
단점 :
관련 SOLID : -
해결 하고자 하는 문제 :
어떻게 :
장점 :
단점 : -
관련 SOLID : -
해결 하고자 하는 문제 :
어떻게 :
Handler가 처리 할 수 있는 Request를 정의한다.
Handeler에 setNext(), handle(request)를 정의한다.
장점 :
단점 :
관련 SOLID :
해결 하고자 하는 문제 :
객체들간의 복잡한 dependncy를 줄이고 싶다.
⇢ 객체들 사이에 mediator를 두고 mediator를 통해서 간접적으로 상호작용하도록 한다.
어떻게 :
장점 :
단점 :
관련 SOLID :
Reference : -
해결 하고자 하는 문제 :
객체의 상태를 저장하고, 이전 상태로 복구
인스턴스를 캡슐화 하면서, 인스턴스의 상태에 대한 저장과 복원을 할 수는 없을까
어떻게 :
장점 :
단점 :
관련 SOLID : -
해결 하고자 하는 문제 :
어떻게 :
State에 따라서 동작이 달라지는 Context를 결정한다.
State Interface를 정의한다.
장점 :
단점 :
관련 SOLID :
해결 하고자 하는 문제 :
어떻게 :
장점 :
단점 :
관련 SOLID :
해결 하고자 하는 문제 :
어떻게 :
장점 :
단점 :
하위 클래스를 통한 기본 단계 구현을 억제하여 Liskov 대체 원칙을 위반할 수 있다?
template method 내부 수행 절차가 변경되면, 유지 보수가 굉장히 까다롭다.
관련 SOLID :
해결 하고자 하는 문제 :
어떻게 :
장점 :
단점 :
관련 SOLID :