Strategy(전략) 패턴
동일한 목적을 수행하는 여러 개의 알고리즘 중 특정 알고리즘을 선택해서 적용하기 쉽게 하고 새로 개발된 알고리즘도 쉽게 추가해서 적용할 수 있게 하는 패턴
다양한 접근 방법
1. 분기문
switch() {
case :
break;
case :
break;
}
if () {
} else if () {
} else {
}
새로운 알고리즘을 추가하기 힘들다. 분기문을 수정해야 한다. 조건문이 많아 질수록 수정 및 확장 재사용이 어렵고 코드 가용성도 떨어진다.
2. Context 클래스자체를 확장해서 알고리즘을 새로운 하위 클래스에 정의한다.
Context context = new SubContext2();
context.method1();
Context 클래스의 하위 클래스로 어떤 객체가 생성되면 그 객체가 사용할 수 있는 알고리즘이 정적으로 결정되어 버린다. 소스가 복잡해 질 수 있다. 유지, 보수라... 알고리즘을 재사용하기가 쉽지 않다. 하지만 재사용될 것 같지 않은 알고리즘이라면 괜찮지 않을 까?
3. Strategy 패턴의 사용
Context 클래스의 구현과 알고리즘의 구현을 분리 시켜주기 때문에 이해하기 쉽고, 유지보수, 확장이 쉬우며 동적으로 알고리즘 변경이 가능하다. 단점으로는 실행기간에 사용되는 객체의 수를 증가시킨다.
'정리 > 디자인패턴' 카테고리의 다른 글
디자인패턴 - Composite(복합) 패턴 (0) | 2017.01.25 |
---|
댓글