반응형
https://jusungpark.tistory.com/7
모든 서브클래스가 사용하는 것이 아닌 기능을 추상클래스에 선언하고, 추상 메소드를 상속받아 구현할 경우
-> 해당 기능을 사용하지 않는 서브클래스에서도 상속받는 메소드들을 오버라이드 해서 구현해야 한다.
해당 기능에 대한 인터페이스를 구현하고, 이를 클래스에서 재정의하여 사용하는 경우
-> 서브클래스에서 같은 기능을 하는 메소드에 대한 중복이 생기고, 변경 시에 모든 서브클래스의 메소드를 수정해 줘야 한다.
-> 모든 서브클래스에서의 로직을 예상하기 어렵다.
strategy pattern의 디자인 원칙
" 애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분으로부터 분리시킨다."
각 서브클래스 마다 변하는 기능을 분리한다.
"상속보다는 구성을 활용한다"
이 메소드들은 각 행동을 나타낼 수 있는 클래스로 구성한다.
"구현이 아닌 인터페이스에 맞춰서 프로그래밍 한다."
즉, 각 기능에 대한 인터페이스를 만들고, 이를 재정의하는 클래스들을 생성한다. (인터페이스 : 클래스 = 1 : n)
각 서브클래스에서는 인터페이스 변수를 생성하고, 해당 기능의 메소드에서 이를 재정의한 클래스를 호출한다.
반응형
'Study > 디자인 & 설계' 카테고리의 다른 글
TDD (0) | 2019.05.25 |
---|---|
코드 품질 최적화 전략 및 기법 (0) | 2019.05.18 |