최범균 (madvirus@madvirus.net)
  blog: javacan.tistory.com




     사진출처: http://www.flickr.com/photos/cdm/366676021/
연봉은 제리가
           협상해




설계에서 Delegation(위임)이란?
                   사진출처: 다음 영화
기능의 확장&재사용:상속으로 푼다면….


            Person




    Agent   Coach    Player




     플레잉 코치를 추가하려면….
기능의 확장&재사용:상속으로 푼다면….
                  Person




   Agent       Coach           Player




            PlayingCoach    G...
상속은 Kind(종류,종)에 대한 것

         JComponent




        AbstractButton




            JButton




       BasicArrowButton
KIND 맞어?
               Person




Agent       Coach           Player




         PlayingCoach    GoalKeeper       MF



...
이건 사실 Role(역할)에 대한 문제


      선수가 누구야?


      코치가 누구야?


   에이전트가 누구야?
Delegation을 이용하여 Role을 분리
                        Role

               Player




    Person     Coach




               ...
Delegation의 구조

Delegator                        Delegate
                          usee

            user




           ...
Delegation …
• 클래스 기능을 확장하고 재사용하는 방법
 – 상속에 비해 확장 유연
 – 런타임에 기능의 교체가 필요한 경우 유용


• 좋은 설계의 바탕

• 다양한 패턴의 기본
 – Decorator, P...
예 - 콜렉션의 처리

                상속                                위임


                List



                              ...
Delegation의 기본 - Strategy (Policy)

                      어떻게 돈을
                            벌지?




               사진출처: ...
Strategy: 기능 정의, 구현 변경 가능



                    어떻게 돈을 벌지?




기능: 돈을 벌다
구현안1: 대성을 패밀리에 출현
구현안2: 태양을 솔로로 데뷔
구현안3: 단체로 교복 ...
변이를 조건문으로 구현한다면…


if (conditionA) {

    … // 알고리즘1 구현
                           코드가 복잡해짐
} else if (conditionB) {
     ...
Strategy 패턴의 구조

Context                                                         Strategy

          EntertainmentCompany ...
Strategy 적용 결과
• 동일한 기능을 제공하는 알고리즘의 집합 정의
• Delegation으로 상속 대체
• 조건문 제거
  – Context 클래스 크기가 작아짐
• Context 변경 없이 Strategy 교...
여기 질문이요!
Upcoming SlideShare
Loading in …5
×

패턴스터디-1 Delgation&Strategy

6,740 views

Published on

패턴 스터디 모임의 첫 시간에 발표할 Delegation과 Strategy 패턴 자료

Published in: Technology, Sports
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,740
On SlideShare
0
From Embeds
0
Number of Embeds
3,430
Actions
Shares
0
Downloads
0
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

패턴스터디-1 Delgation&Strategy

  1. 1. 최범균 (madvirus@madvirus.net) blog: javacan.tistory.com 사진출처: http://www.flickr.com/photos/cdm/366676021/
  2. 2. 연봉은 제리가 협상해 설계에서 Delegation(위임)이란? 사진출처: 다음 영화
  3. 3. 기능의 확장&재사용:상속으로 푼다면…. Person Agent Coach Player 플레잉 코치를 추가하려면….
  4. 4. 기능의 확장&재사용:상속으로 푼다면…. Person Agent Coach Player PlayingCoach GoalKeeper MF GKPlayingCoach MFPlayingCoach
  5. 5. 상속은 Kind(종류,종)에 대한 것 JComponent AbstractButton JButton BasicArrowButton
  6. 6. KIND 맞어? Person Agent Coach Player PlayingCoach GoalKeeper MF GKPlayingCoach MFPlayingCoach
  7. 7. 이건 사실 Role(역할)에 대한 문제 선수가 누구야? 코치가 누구야? 에이전트가 누구야?
  8. 8. Delegation을 이용하여 Role을 분리 Role Player Person Coach Agent
  9. 9. Delegation의 구조 Delegator Delegate usee user public class Delegator { public void do() { delegate.some(); } }
  10. 10. Delegation … • 클래스 기능을 확장하고 재사용하는 방법 – 상속에 비해 확장 유연 – 런타임에 기능의 교체가 필요한 경우 유용 • 좋은 설계의 바탕 • 다양한 패턴의 기본 – Decorator, Proxy, Strategy, …
  11. 11. 예 - 콜렉션의 처리 상속 위임 List LuggageCompartment List -pieces : List LuggageCompartment class LuggageCompartment class LuggageCompartment { extends List { List pieces; void add(Luggage piece) { ... void add(Luggage piece) { super.add(piece); ... } pieces.add(piece); } } }
  12. 12. Delegation의 기본 - Strategy (Policy) 어떻게 돈을 벌지? 사진출처: 스타뉴스
  13. 13. Strategy: 기능 정의, 구현 변경 가능 어떻게 돈을 벌지? 기능: 돈을 벌다 구현안1: 대성을 패밀리에 출현 구현안2: 태양을 솔로로 데뷔 구현안3: 단체로 교복 광고
  14. 14. 변이를 조건문으로 구현한다면… if (conditionA) { … // 알고리즘1 구현 코드가 복잡해짐 } else if (conditionB) { 특정 런타임에 사용되지 않는 코드 포함 … // 알고리즘2 구현 신규 알고리즘 추가의 어려움 } else if (conditionC) { … // 알고리즘3 구현 }
  15. 15. Strategy 패턴의 구조 Context Strategy EntertainmentCompany MakingMoneyPlan +setMoneyPlan(plan : MakingMoneyPlan) +makeMoney() Solo Famiyly AD -person Strategy의 구현체
  16. 16. Strategy 적용 결과 • 동일한 기능을 제공하는 알고리즘의 집합 정의 • Delegation으로 상속 대체 • 조건문 제거 – Context 클래스 크기가 작아짐 • Context 변경 없이 Strategy 교체 가능 – 이슈: 누가 Strategy 구현체를 Context에 설정할지 • DI(dependecy injection)으로 설정 (예, 스프링) • 또는 Context를 사용할 객체가 설정
  17. 17. 여기 질문이요!

×