Java로 배우는 디자인패턴 입문 Chapter 14. Chain of Responsibility 책임 떠넘기기

Slides:



Advertisements
Similar presentations
비즈쿨 - 정 성 욱 - - 금오공고 비즈쿨 - 정 성 욱 1. 나는 각 단원들의 활동들에 성실하게 참여 하겠습니다. 우리의 다짐 2. 나는 나와 전체의 발전을 위해 각 멘토들의 지도에 순종하겠습니다. 3. 나는 각 단원들을 숙지함으로써 비즈니스 마인드를 함양하고 자신의.
Advertisements

ㅋㅋ 다른 집단과 명확히 구별되는 가치체계와 지식 그리고 그에 부합하는 기술을 가지고 있어야 한다. 가치체계 - 사회복지사윤리강령, 선서 등 기본요소 완성 지식 - 사회복지사 1 급 자격증 시험으로 완성 기술 - 명확하지 않으나 실습, 보수교육을 통해 완성 Client.
7 월 소식지에서는 도서관 분류에 대해 알아보았어요. 한국십진분류법은 0 에서 9 까지 열 개의 수를 가지고 이 세상 의 모든 것을 나누는 방법이라는 것. 이 세상의 모든 것이 이 열 개 가운데 어딘가에 꼭 들어가 야 한 다는 것 그럼,
아름다운 이들의 행복한 길음안나의 집.
6.1 사용사례 6.2 객체 모델링 6.3 동적 모델링 6.4 시스템 설계 6.5 객체 설계 6.6 디자인 패턴
11장. 프로토콜 핸들러 AI &HC I LAB 김 성 현.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
Chapter 02 JAVA 프로그래밍 시작하기 01 실무에서 사용하는 JAVA 개발 환경 02 JAVA 프로그램 작성
2017년 1/4분기 상1동 주민자치센터프로그램 수강생 모집【선착순】
꼼꼼한 청소법 생활의 지혜.
데이터 관리의 모든 것 데이터 최적화하기 데이터 정렬하기 자동 필터와 고급 필터
Chapter 8 목차 8.1 네트워크 보안이란 무엇인가? 8.2 암호학의 원리 8.3 메시지 무결성 8.4 종단점 인증
Ruby 프로그래밍 1 문자열 입출력 제어구조 looping 함수 정의
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
8. 객체와 클래스 (기본).
Chapter 8 목차 8.1 네트워크 보안이란 무엇인가? 8.2 암호학의 원리 8.3 메시지 무결성 8.4 종단점 인증
Power Java 제4장 자바 프로그래밍 기초.
Java로 배우는 디자인패턴 입문 Chapter 22. Command 명령을 클래스로 만든다
Java로 배우는 디자인패턴 입문 Chapter 20. Flyweight 동일한 것을 공유해서 낭비를 없앤다
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 03. 클래스의 기본.
명품 Java Programming.
윤 홍 란 4 장 클래스 작성 윤 홍 란
Edus 충남 통합인증을 위한 교과부 표준보안 모듈 설치 안내 (smart.edus.or.kr)
Chapter 05. 클래스 완성. chapter 05. 클래스 완성 01. 복사 생성자 복사 생성(Copy Construction) 생성될 때 자신과 같은 타입의 객체를 변수로 받아, 이 객체와 같은 값을 갖는 새로운 객체를 생성하는 것 명시적인 생성 과정뿐만.
2010학년도 2학기 객체지향의 이해.
DataScience Lab. 박사과정 김희찬 (월)
컴퓨터 활용 및 실습 Chapter 3 수식과 함수 김 정 석
안드로이드 테트리스에 필요한 최소 기능.
Java로 배우는 디자인패턴 입문 Chapter 10. Strategy 알고리즘을 모두 교체하다
자바 5.0 프로그래밍.
[Homework #2] Chapter 5 Chapter 6 Page 110, 문제 13 – 피라미드 높이 구하는 문제
Java의 정석 제 1 장 JDK설치 및 설정 Java 정석 남궁성 의
Android Studio 설치하기 PPD JSY.
Java의 정석 제 1 장 JDK설치 및 설정 Java 정석 남궁성 의
2009학년도 1학기 상지대학교 컴퓨터정보공학부 고 광 만
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
DataScience Lab. 박사과정 김희찬 (월)
어서와 Java는 처음이지! 제9장 인터페이스, 패키지.
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
소프트웨어 공학 (Software Engineering)
메소드와 클래스 정의 및 문제 풀이 Method and Class Define and Problem Solve
신저작권법에 의해 한국 내에서 보호를 받는 저작물이므로 무단전제와 무단복제를 금합니다.
칼빈의 생애와 개혁자로의 변모 사학과 김종식.
제 12장. 사용자 정의형으로서의 클래스 학기 프로그래밍언어및실습 (C++).
국제의료관광 관련 법, 제도.
호암초등학교 박대현 선생님의 음악 수업 안내.
[INA470] Java Programming Youn-Hee Han
Java Chapter 4 ~ 주차.
Homework #9 (1/2) 다음 지시에 따라 프로그램/결과(혹은 설명)를 출력하여 제출한다.
Homework #9 (1/2) 다음 지시에 따라 프로그램/결과(혹은 설명)를 출력하여 제출한다.
자바 5.0 프로그래밍.
남아메리카 선교 김수정, 이하정 전희진, 장성경.
Chapter 11 해쉬(Hash) SANGJI University Kwangman KO
중등교원 전보시스템 로그인 오류시 해결 해결방안 * 작성일 2016 년 12 월 15일 * 작성자 광주광역시교육청.
SIMPLE CALL Client 사용설명서
자바 5.0 프로그래밍.
집합의 연산 총정리 수학 7-가 집합과 자연수 > 집합 > 9/20 수업계획 수업활동 [제작의도]
CHAPTER 9-1 한국의 사회복지정책 - 사회보험제도 -
Chap. 8 자바 가상 머신의 클래스 로더 사용 PS Lab. 이지연.
제2장 관세법 일반 제1절 통칙 제2절 법 해석의 원칙 등 제3절 기한과 기간 제4절 서류의 송달 등
6월 1주 주간메뉴표 NEW 엄마손 조식 쉐프 삼촌 중식 참새 방앗간 석식 ◎원산지 안내 : 쌀(국내산)
김희정 Bridge Pattern.
자료구조 강의소개 정성훈 연락처 : 이메일 : 연구실 : 연219호 연락처 : 이메일 : 홈페이지: 정성훈.
노인학대예방 교육 교육강사 시 설 장 송나겸 보성실버센터.
Java의 정석 제 7 장 객체지향개념 II-3 Java 정석 남궁성 강의
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 02. C언어 기반의 C++ 2.
Chapter 04. 사회복지실천의 현장 이해.
발 표 자 : 7조 손 창 국 윤 오 성, 박 진 완 객체 지향 프로그래밍 C++
경찰학 세미나 제 5 강 경찰관직무집행법 2조 5호의 의미 신라대학교 법경찰학부 김순석.
Presentation transcript:

Java로 배우는 디자인패턴 입문 Chapter 14. Chain of Responsibility 책임 떠넘기기 2004-1

01. Chain of Resposibility 패턴 “책임 떠넘기기”가 필요한 경우가 있다 예: 어떤 요구가 발생했을 때 그 요구를 처리할 객체를 바로 결정할 수 없는 경우에는 다수의 객체를 사슬처럼 연결해 두고 객체의 사슬을 차례로 돌아다니면서 목적에 맞는 객체를 결정하는 경우 Chain of Responsibility 어떤 사람에게 요구가 들어온다 => 그 사람이 그것을 처리할 수 있으면 처리하고, 처리할 수 없으면 ‘다음 사람’에게 넘긴다.=> ... ... 14. Chain of Responsibility /42

trouble이 발생해서, 누군가가 처리해야 하는 상황 02. 예제 프로그램 trouble이 발생해서, 누군가가 처리해야 하는 상황 14. Chain of Responsibility /42

02. 예제 프로그램 클래스 다이어그램 14. Chain of Responsibility /42

Trouble 클래스 02. 예제 프로그램 number 필드: 트러블 번호를 유지함 getNumber( ) 트러블 번호를 반환하는 메소드 14. Chain of Responsibility /42

Support 클래스 02. 예제 프로그램 트러블을 해결할 연쇄를 만들기 위한 추상 클래스 name 필드: 트러블 해결자의 이름 next 필드: 자기 다음 번에 트러블을 해결할 객체(떠넘기기를 할 곳)를 가리킨다. setNext( ) next 필드를 설정한다 suuport( ) resolve( ) 메소드를 호출해서, 반환 값이 false 이면, 자기 다음 해결자에게 트러블을 떠넘긴다. Template Method 패턴을 사용했다. 14. Chain of Responsibility /42

NoSupport 클래스 LimitSupport 클래스 02. 예제 프로그램 Support의 하위 클래스 resolve( ) 항상 false를 반환한다. 즉, 어떠한 트러블로 해결하지 않는다. LimitSupport 클래스 limit로 지정한 번호 미만의 트러블 만을 해결하는 클래스 14. Chain of Responsibility /42

OddSupport 클래스 SpecialSupport 클래스 02. 예제 프로그램 홀수 번호의 트러블을 처리하는 클래스 지정한 번호의 트러블에 한해서 처리하는 클래스 14. Chain of Responsibility /42

Main 클래스 02. 예제 프로그램 알고리즘 결과 여섯 명의 트러블 해결자 생성 Chain of Responsibility 형성 다양한 트러블 발생시켜서, Alice에게 전달해 준다. 결과 처음에는 Bob이 분발한다 Bob이 해결할 수 없을 때 Diana가 등장한다. Alice는 전혀 등장하지 않는다 <= 모든 트러블을 떠넘기므로 429번 트러블은, Charlie가 해결한다. 14. Chain of Responsibility /42

Main 클래스 02. 예제 프로그램 363번 트러블을 처리할 때의 시퀀스 다이어그램 Chain of Responsibiity 14. Chain of Responsibility /42

ConcreteHandler(구체적인 처리자)의 역할 03. 등장 역할 Handler(처리자)의 역할 요구를 처리하는 클래스들의 인터페이스(API)를 정하는 역할 예제에서는, Support 클래스가 해당됨 요구를 처리하는 메소드는, support( )이다. ConcreteHandler(구체적인 처리자)의 역할 요구를 처리하는 구체적인 역할 예제에서는, NoSupport, LimitSupport, OddSupport, SpecialSupport 클래스가 해당됨 Client(요구자)의 역할 ConcreteHandler 역할에게 요구를 하는 역할 예제에서는, Main 클래스가 해당됨 14. Chain of Responsibility /42

03. 등장 역할 클래스 다이어그램 14. Chain of Responsibility /42

요구하는 사람과 요구를 처리하는 사람을 느슨하게 연결 04. 독자의 사고를 넓혀주는 힌트 요구하는 사람과 요구를 처리하는 사람을 느슨하게 연결 Client는 맨 처음 사람에게만 요구를 한다. 그 요구가 처리자들을 연결한 사슬을 돌아다니다가, 적절한 처리자에 의해 처리된다. 이 패턴을 사용하지 않으면, “이 요구는 이 처리자가 처리해야 한다’라는 지식을 누군가 중앙 집약적으로 가지고 있어야 한다. 이 지식을 요구자에게 맡기는 것은 현명하지 않다. 14. Chain of Responsibility /42

동적으로 연쇄의 형태를 바꿀 수 있다 자신의 일에 집중할 수 있다 떠넘기기로 처리가 늦어지지 않을까? 04. 독자의 사고를 넓혀주는 힌트 동적으로 연쇄의 형태를 바꿀 수 있다 Alice ~ Fred 까지의 서포트 팀이 항상 고정되는 것은 아니다. 동적으로 처리자들의 순서를 바꿀 수 있다. 자신의 일에 집중할 수 있다 자신이 할 수 없으면 재빨리 ‘다음 사람’에게 넘김으로써, 각각의 처리자가 자신의 일에만 집중할 수 있다. 떠넘기기로 처리가 늦어지지 않을까? 유연성은 높지만, 처리 속도는 느리다. 요구와 처리자의 관계가 고정적이고, 처리의 속도가 중요한 경우에는 이 패턴을 사용하지 않는 편이 유효할 수도 있다. 14. Chain of Responsibility /42

05. 관련 패턴 Composite 패턴 Command 패턴 14. Chain of Responsibility /42

06. 요약 요구를 처리하는 객체들을 사슬 모양으로 늘어놓고, 요청이 들어오면 누가 처리할 지를 차례차례 체크해 나가는 Chain of Responsiblity 패턴 14. Chain of Responsibility /42

14-1 연습 문제 윈도 시스템에서, Chain of Responsibility 패턴이 자주 사용된다. 윈도 시스템의 버튼, 텍스트박스, 체크 박스 등에 마우스 클릭 이벤트가 발생하면? 부모 윈도 OK Cancle 컴포넌트 14. Chain of Responsibility /42

14-2 14-3 연습 문제 Support 클래스의 support 메소드는 public으로 선언된 반면, resolve 메소드는 protected로 선언된 의도는 무엇일까? 14-3 예제 프로그램의 Support 클래스의 support 메소드를, 재귀적으로 호출하지 말고, for-loop로 전개하시오. for(Support obj = this; true; obj = obj.next) { ??? } 14. Chain of Responsibility /42

Homework #2: Chain of Responsibility 패턴 응용 14장 예제 프로그램에, HwSupport 클래스 추가하기 기능: 트러블 번호가 소수(prime number)이면 자신이 처리하고, 소수가 아니면 다음 처리자에게 넘긴다. “소수 구하는 메소드 calcPrimeNumber(int)”를 HwSupport에 작성할 것 Main의 main( )에서는 ‘자신의 이름”을 객체 참조 변수로 하여, HwSupport 객체를 생성한다. 예: Support seunghoon = new HwSupport(“최승훈”); 이 객체를, 책임 사슬의 맨 앞에 둔다. 나머지는 예제 프로그램과 그대로 둔다. 제출 방법 제출 방법은, Homework #1과 같다. 14. Chain of Responsibility /42