태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.


댓글 하나가 운영자에겐 커다란 힘이 됩니다!

1. 컨텍스트
Strategy 패턴은 일련의 알고리즘 군을 정의하고, 각각을 캡슐화하여 상호 교체가 가능하게 함으로써 클라이언트와 독립적인 다양한 알고리즘 구현을 가능하게 한다.

protected void paintBorder(Graphics g) {
switch(getBorderType()) {
     case LINE_BORDER:   paintLineBorder(g);
                         break;

     case ETCHED_BORDER: paintEtchedBorder(g);
                         break;

     case TITLED_BORDER: paintTitledBorder(g);
                         break;
     ...
  }
}

위의 코드를 보자. getBorderType() 메소드에 의해 반환되는 타입에 따라, 위와 같은 복잡한 처리가 필요한 경우, Border라고 하는 공통의 인터페이스를 정의하고, 실제 알고리즘 구현은 이를 구현하는 클래스가 담당한다. 그렇게 되면 아래와 같이 클라이언트의 처리부분이 간결해진다.  
protected void paintBorder(Graphics g) {
Border border = getBorder();

if (border != null) {
     border.paintBorder(this, g, 0, 0, getWidth(), getHeight());
}
}

2. 적용 영역
  • 다수의 관련 클래스가 행위에 있어서만 차이를 보일 때
  • 알고리즘의 다양한 변이가 요구되는 경우
  • 클라이언트가 알 수 없는 데이터를 알고리즘에서 이용하는 경우
  • 클래스에서 많은 행위를 정의하고 있으나, 이들이 다수의 조건문에 의해서 오퍼레이션으로 나타나는 경우

3. 구조


4. 적용 결과
l        알고리즘 군을 형성한다
l        Strategy 패턴의 사용은 조건문장을 제거한다. 반면에 객체의 숫자는 증가된다.
l        Strategy 패턴은 동일한 행위의 구현에 대해 선택을 제공한다.
l        클라이언트는 반드시 서로 다른 Strategy에 대해 인지하고 있어야 한다.
l        클라이언트와 Strategy 사이의 커뮤니케이션 부하(communication overhead)를 야기할 수 있다.

5. 관련 패턴
l        Strategy 객체는 종종 좋은 Flyweight 객체의 예가 될 수 있다.


6. 참고 문헌
온라인
이클립스 활용 실전 예제: 이클립스 리팩토링 기능을 이용한 Strategy 패턴 적용하기
위키 피디아: Strategy
Head-first 풀이: 1장 Strategy Pattern, Strategy Pattern 예제
자바월드 아티클(영문): Strategy for success
충북대학 번연글: The Strategy Pattern

서적 안내
Design Patterns: Elements of Reusable Object-Oriented Software

Head First Design Patterns
에릭 프리먼 외 지음,
서환수 옮김
한빛미디어

GOF의 디자인 패턴
Erich Gamma 외 지음,
김정아 옮김
피어슨에듀케이션코리아
출처 : http://younghoe.info/163

위의 정보가 도움이 되셨나요? 그렇다면 댓글 하나만 남겨주세요.
댓글 하나가 운영자에겐 커다란 힘이 됩니다!

Write your message and submit
« PREV : 1 : ... 403 : 404 : 405 : 406 : 407 : 408 : 409 : 410 : 411 : ... 436 : NEXT »