본문 바로가기

공부/컴퓨터

[디자인패턴] Chain Of Responsibility 패턴.

반응형

==========================================================================
이 글은 이론적으로 아는 것을 직접 설명 및 구현을 해 봄으로써 제 자신의
실력을 다지기 위한 글 입니다. 물론 정확한 이론. 용어도 아님을 밝힙니다.
이 글을 직.간접적으로 사용함으로써 발생되는 모든 불이익을 책임지지 않습니다.

문의점, 오류, 잘못된 용어들은 저의 홈페이지 Work 게시판을 이용하여 주시고
이상의 사항에 대하여는 최대한 덧글 ( 코멘트 ) 를 이용해 주십시오.

본 글은 저의 홈페이지인 http://ggaman.com 과
싸이월드의 (JPSC) JAVA program study club 에서 보실수 있습니다.

homepage : http://ggaman.com e-mail n MSN : chan at ggaman.com

20030922 - Chan
==========================================================================
안녕하세요.
찬 입니다.

몇일 전에 정리 했던 디자인 패턴의 마지막입니다.

자바언어로배우는 디자인 패턴이라는 책에서는.
책임 떠넘기기 라는 말을 사용했습니다.

여러개의 방법들을 서로 연결하고(마치 링크드 리스트처럼.)
내가 처리하지 못하면 다음 사람에게 넘겨주는 방식을 사용하고 있습니다.

이렇게 한다면. 특정 한 클래스가  "너는 어떤일을 하고, 너는 어떤일을 해라." 라는 것을
알고 있는 것 보다는 속도가 느립니다.  ( 조금만 생각해보시면 아실듯 )

하지만 이것은 처리역할 순서를 동적으로 바꿀수 있다는 장점이 있습니다.
if (boolean) { a.setNext(b).setNext(c); }
else { c.setNext(b).setNext(a) }

이런식으로 한다면 문제를 처리할 순서가  경우에 따라
a -> b -> c 가 될 수도 있고 c -> b -> a가 될 수도 있습니다.




이제까지 디자인 패턴 몇개를 정리해 오면서 느낀 점입니다.

주로 보면..
일단 필요한 여려개의 클래스를 만들고 상위로 인터페이스나 추상 클래스를 만들어 놓고.
매개변수로 사용할때  인터페이스나. 추상 클래스로 넘겨주어서.
사용하는 곳에서 여러개의 클래스를 쉽게 사용할 수 있게 해 줍니다.
( 이것은 객체 지향에서의 오버로딩 기법을 활용한 것입니다. )

그 나머지는 문제를 어떻게 해결 할것이냐 하는 것에 대한 기법인것 같습니다.


처음에는 뭐 이런게 있나 싶었는데.
조금씩 분석해 보고. 클래스 다이어그램을 직접 그려 보고 하니깐.
정말 감탄에 감탄을 하게 되는군요 ..
( 물론 전 초보라 ;; 뭐든지 다 감탄 한답니다. ;;; )

아. 참고로 제가 쓰는 UML 툴은 플라스틱소프트웨어 에서 나온  플라스틱 2003 입니다.
개인용으로는 무료로 사용할 수 있네요 . ( 몇가지 제약되는 기능이 있습니다. ;; )

더 중요한 참고로. 전 ;; UML을 아직 잘 모르기 때문에 몇가지 생략하는 경우가 많이 있습니다.
예를 들어 메소드와 매개변수를 적는데 SomeMethod(SomeOject) ; 이런식으로 ;;;
빼 먹는 경우가 많이 있습니다.;;
이는 정확한 문법이 아니고. 어떤 식으로 사용할수 있다 는 예제 임으로 참고만 하여 주시기 바랍니다.


조금씩 알아 가면 알아 갈수록 재미있군요.


그럼이만.
즐거운 하루 되세요~~!! ^^
반응형