GoF Mediator 패턴

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    GoF Mediator 패턴 - Presentation Transcript

    1. 최범균 (madvirus@madvirus.net) blog: javacan.tistory.com
    2. 출처: http://www.thecityreview.com/f00ccon1.html
    3. 최초 가입 폼 아이디를 입력하면 활성화 됨 중복확인 아이디 암호 암호확인 암호를 입력하면 활성화 됨 이메일 아이디, 암호, 이메일을 입력하면 가입 취소 활성화 됨
    4. 최초 클래스 구조 IDInput PasswordInput -submitButton : SubmissionButton -submitButton : SubmissionButton -checkButton : CheckDuplicationButton -confirmationInput : PasswordConfirmationInput CheckDuplicationButton SubmissionButton PasswordConfirmationInput -checker : IdDuplicationChecker -submitButton : SubmissionButton CancelButton IdDuplicationChecker EmailInput -submitButton : SubmissionButton -submitButton : SubmissionButton
    5. 코드 class IdInput { CheckDuplicationButton checkButton; void changed() { if (value.length > 0) { checkButton.enable(); } else { class CheckDuplicationButton { checkButton.disable(); IdDuplicationChecker checker; } } void onclick() { } checker.check(); } class IdDuplicationChecker { } SumissionButton submitButton; void check() { … submitButton.setCheckPassed(true); } }
    6. 기능이 추가된 가입 폼 madvirus 중복확인 아이디 암호 중복확인이 되면 암호확인 활성화 됨 이메일 가입 취소
    7. 기능 추가가 반영된 클래스 IDInput PasswordInput -submitButton : SubmissionButton -submitButton : SubmissionButton -checkButton : CheckDuplicationButton -confirmationInput : PasswordConfirmationInput CheckDuplicationButton SubmissionButton PasswordConfirmationInput -checker : IdDuplicationChecker -submitButton : SubmissionButton CancelButton IdDuplicationChecker -submitButton : SubmissionButton EmailInput -passwordInput : PasswordInput -submitButton : SubmissionButton -emailInput : EmailInput
    8. 신규 클래스∙객체 기능의 추가 → 객체간 커넥션 개수 증가 출처: http://www.flickr.com/photos/samuelhteer/767956429/sizes/o/
    9. 클래스가 증가하면,,, 객체 간 기능이 다수의 재사용성 클래스 커넥션 클래스로 분산 향상 개수 증가 증가
    10. 재사용이 어려워지는 시기 발생 IDInput PasswordInput -submitButton : SubmissionButton -submitButton : SubmissionButton -checkButton : CheckDuplicationButton -confirmationInput : PasswordConfirmationInput CheckDuplicationButton SubmissionButton PasswordConfirmationInput -checker : IdDuplicationChecker -submitButton : SubmissionButton 난 Id 중복 검사 기능만 재사용하고 싶었을 CancelButton 뿐이고~ IdDuplicationChecker -submitButton : SubmissionButton EmailInput -passwordInput : PasswordInput -submitButton : SubmissionButton -emailInput : EmailInput 이미지 출처 http://bbs2.agora.media.daum.net/gaia/do/ kin/read?bbsId=K151&articleId=25003
    11. 결국 거대한 한 놈(monolith)이 됨 IDInput PasswordInput 재사용 -submitButton : SubmissionButton -submitButton : SubmissionButton -checkButton : CheckDuplicationButton -confirmationInput : PasswordConfirmationInput CheckDuplicationButton SubmissionButton PasswordConfirmationInput -checker : IdDuplicationChecker -submitButton : SubmissionButton CancelButton IdDuplicationChecker -submitButton : SubmissionButton EmailInput -passwordInput : PasswordInput -submitButton : SubmissionButton -emailInput : EmailInput 변경 확장
    12. 해결안 - Mediator로 커뮤니케이션 추상화 Mediator - 객체들 간의 교류를 제어하고 조정한다 id : Input duplicationCheckButton : Button password : Input submissionButton : Button : RegistrationDirector passwordConfirmation : Input cancelButton : Button email : Input : IdDuplicationChecker 각 Colleague들은 Mediator를 통해서 간접적으로 다른 Colleague와 통신
    13. 객체간 메시지 흐름
    14. 언제 쓸까? • 많은 객체들이 복잡하게 얽혀 있어서 – 구조나 동작 방식의 이해가 어려울 때 – 객체의 재사용이 어려울 때 • 다수의 클래스에 분산된 기능을 – 상속을 사용하지 않고 커스터마이징하고 싶을 때
    15. Mediator 패턴의 구조 정리 Mediator Colleague -mediator : Mediator ConcreteMediator ConcreteColleague2 ConcreteColleague1
    16. 적용 결과 • 기능 구현 및 협업 제어가 Mediator에 집중 – 객체들이 어떻게 협업하는 지를 추상화 – 협업 변경 필요시 Mediator만 변경/상속하면 됨 – Mediator 복잡도 증가 → Mediator 유지보수 문제 • Colleague 간 커플링 제거 – 다른 Colleague에 영향없이 Colleague의 재사용, 기 능 추가, 수정 가능 • 객체간 프로토콜이 m-n에서 1-n으로 단순화 – 이해, 유지보수, 확장이 쉬워짐
    17. Mediator-Colleague 연동 구현 1 • Mediator에 수싞 전용 인터페이스 추가 Mediator Colleague +colleagueChanged(colleague : Colleague) ConcreteMediator Colleague1 Colleague2
    18. Mediator-Colleague 연동 구현 2 • Observer 패턴을 이용 Colleague에서 Mediator로의 의존 제거
    19. 질문 있으세요?
    SlideShare Zeitgeist 2009

    + beom kyun choibeom kyun choi Nominate

    custom

    712 views, 0 favs, 1 embeds more stats

    스터디 2회, Mediator 발표자료

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 712
      • 548 on SlideShare
      • 164 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 0
    Most viewed embeds
    • 164 views on http://javacan.tistory.com

    more

    All embeds
    • 164 views on http://javacan.tistory.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?