배고픈 개발자 이야기
0.스트래티지 (strategy pattern) 패턴 본문
캡슐화를 통해 코드의 중복이 없이 재사용 가능하게 하는 패턴
-
스트래티지를 활용하여 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘 변경할 수 있다.
ex1) 추상 동물 클래스와 일반적인 방법으로 상속받는 Eagle / Tiger 객체 - 속성 : cry / display
ex1)에서 추가 속성으로 fly 메소드를 추가하면 추상 클래스를 상속 받는 객체들은 모두 속성을 호출할 수 있다.
하지마 fly는 모든 Animal의 공톡 속성이 아니므로 문제가 있고 - 이를 구분해 주어야 한다.
ex2) 추가 속성의 공통 속성 문제를 해결하기 위해 fly 메소드를 인터페이스로 추가
fly를 객체마다 따로 구분해주기 위해 인터페이스로 구현하였지만 fly 인터페이스를 객체에 따라 구분해 주어야
할 필요성이 생기게 되며, 인터페이스를 변경하면 되겠지만 코드의 중복이 발생하게 된다. - 역시 좋은 방법이 아님
추가적 계층(새그룹)을 생성하는것도 중복 발생 및 복잡해짐
따라서 fly와 같이 애플리케이션에서 달라지는 부분을 찾아내어 분리시키는 "캡슐화"를 진행한다.
그렇게 하면 나중에 바뀌지 않는 부분에는 영향을 미치지 않고 바뀌는 부분만 고치거나 확장이 가능해짐
ex3) fly / cry 캡슐화 예시 - 변하지 않는 부분 -> Animal클래스, 변하는 부분 -> 캡슐화하여 Aniaml클래스 인터페이스에 기능 위임
fly와 cry의 인터페이스에 각각 특성의 종류별로 클래스 생성하여 인터페이스를 구현하여 Animal로 부터 인터페이스에 기능을 위임
perform은 인터페이스의 함수를 요청하기 위한 함수이며, 이제 각 객체별로 인터페이스에 구현되어 있는 속성을 객체에 대입합니다.
따라서 이제는 객체 또는 기능이 추가/변경 되더라도 쉽고 간단하게 적용이 가능해집니다.
코드의 중복 없이 재사용이 가능
'전산학 > 디자인패턴' 카테고리의 다른 글
4.싱글톤 (Singleton) 패턴 (0) | 2019.09.14 |
---|---|
3.팩토리 메서드 (Factory method) 패턴 (0) | 2019.09.14 |
2.커맨드 (Command) 패턴 (0) | 2019.09.14 |
1.옵저버(Observer) 패턴 (0) | 2019.09.08 |