행위패턴
-
[Design Pattern] 전략(Strategy) 패턴 - 디자인 패턴CSE/Design Pattern 2015. 6. 13. 10:55
Pattern #20 전략 패턴 장단점이 서로 다른 여러 알고리즘들이 존재하는 상황에서 최적의 알고리즘을 선택해서 사용할 때 패턴 요약 - 알고리즘들을 객체로 만들고 일반화 - Client가 알 필요가 없거나, 알아서는 안 되는 자료를 알고리즘에 사용할 때 동기 당신이 이번에 맡은 일은 보안 시스템을 개발하는 작업이다. 보안 시스템의 핵심으로 암호화 알고리즘이 사용된다. 시스템을 설계할 때 고려해야 될 사항으로는 각 인증기관에 따라 서로 다른 암호화 알고리즘을 사용해야 되며, 또 기술의 발전에 따라 알고리즘을 교체하여야 한다는데 있다. 어떻게 설계할 것인가? 기본적인 방법 기본적인 방법 - 알고리즘들을 객체로 만들고 일반화 한다. * 알고리즘 사용 객체와 알고리즘 객체와의 결합이 줄어든다. * 기존 코..
-
[Design Pattern] 메멘토(Memento) 패턴 - 디자인 패턴CSE/Design Pattern 2015. 6. 13. 10:54
Pattern #19 메멘토 패턴 객체의 상태를 저장해두었다가 복원해야 될 경우 사용 패턴 요약 - 오리지널 객체는 본래의 기능에 충실하고 메멘토는 상태 정보와 관리를 전답하면서 캡슐화되어 독립적 - 상태 역할만 분리 동기 게임회사에 다니는 당신에게 새로 맡겨진 일은 바둑 프로그램 개발 작업이다. 게임 인공지능 부분은 다른 팀에서 맡기로 하였고, 당신은 사용자 인터페이스와 바둑 무르기, 복기하기 등과 같은 기능을 개발하여야 한다. 바둑 무르기 기능의 경우, 사용자가 두기 이전 상태로 되돌려야 하며 복기 기능은 게임의 처음부터 진행된 때 까지 바둑판 상태를 차례대로 표현할 수 있어야 한다. 이렇게 객체의 상태를 저장해두었다가 복원해야 될 경우 당신은 어떻게 객체지향설계를 할 것인가? 바둑 게임 분석 - 필..
-
[Design Pattern] 커멘드(Command) 패턴 - 디자인 패턴CSE/Design Pattern 2015. 6. 13. 10:52
Pattern #18 커멘드 패턴 서비스를 호출할 때 융통성을 높이려고 사용 (ex: undo Operation) 패턴 요약 - 오퍼레이션을 클래스로 정의 동기 PDA’s GUI System 개발 프로젝트에 참여한 당신이 맡은 업무는 window main-menu 부분의 설계이다. 각 application은 mainmenu를 가지고 있고, main-menu의 각 menu 들은 여러 개의 menu-item 을 가 지 고 있 다 . 사용자가 특정 menu-item 을 선택하면 해당 menu-item에 연동된 기능이 수행된다. 당신은 어떤 식으로 설계할 것 인가? 어플리케이션 모델링 어플리케이션 모델링2 - 기능요청(예: '문서열기') 자체를 객체화 - Command - 기능요청을 원하는 각 객체에 해당 Co..
-
[Design Pattern] 상태(State) 패턴 - 디자인 패턴CSE/Design Pattern 2015. 6. 13. 10:50
Pattern #17 상태 패턴 객체의 상태에 의하여 결정된 방법으로 객체를 동작하게 할 때 사용 패턴 요약 - 상태 객체를 따로 만들어 포함하게 하고, 상태 객체에게 위임하여 동작하게 함 동기 당신은 새로운 프로젝트의 프로그램 reviewer 책임을 맡았다. Reviewer로 당신은 팀원들이 개발한 핵심 코드를 살펴보고, 논리상의 문제점이나 좋지 않은 설계구조를 지적해 주어야 한다. 오늘 살펴본 코드에는, 특정 객체가 자신의 상태에 따라 다른 행동을 하기 위하여 if 문장을 많이 사용하였다. 그러다 보니, 함수의 크기가 커지고 객체상태가 많은 경우 해당 객체의 구현이 더욱 복잡해졌다. 개발자에게 조언해줄 해결방법은? 해결방안 - 객체의 가능한 상태 개수 만큼 State class를 작성한다. - 일반적..
-
[Design Pattern] 옵저버(Observer) 패턴 - 디자인 패턴CSE/Design Pattern 2015. 6. 13. 10:47
Pattern #16 옵저버 패턴 한 객체에 의하여 영향을 받는 객체들을 정리하는데 사용 패턴 요약 - 단일 객체가 영향받는 객체 집합에 대하여 같은 이름의 메소드를 호출하여 구현 - 관찰 대상 객체가 관찰하는 객체가 몇 개인지 어떤 클래스인지 모름 동기 당신은 기업정보 입출력 프로그램을 개발 중이다. 이 프로그램을 이용하여 사용자들은 DB에 저장되어 있는 기업정보(월 판매액, 매출 증가량, …)를 여러 가지 형태(도표, 꺾은선그래프, 막대그래프,..)로 볼 수 있어야 한다. 또한 관리자들이 특정 기업정보를 갱신한다면 해당 정보를 보여주고 있는 모든 View들은 변경된 정보를 다시 반영하여 보여 주어야 한다 . 기업정보(Model) 과 보여주는 화면(View)과의 관계를 어떻게 설계할 것인가? 해결방안 ..
-
[Design Pattern] 중재자(Mediator) 패턴 - 디자인 패턴CSE/Design Pattern 2015. 6. 13. 10:45
Pattern #15 중재자 패턴 관련되는 객체 사이에 레퍼런스를 피하는데 사용 패턴 요약 - 중간 행위를 찾아 별도의 클래스에 두게 함 - 다른 객체의 존재를 모르는 상태에서도 메시지를 주고 받을 수 있음 동기 당신은 자판기 제어 프로그램 개발을 주력으로 하는 회사에 취직하였다. 당신에게 주어진 일은 기존 자판기 프로그램 개발의 생산성을 저하시키는 문제점을 찾아내고, 이에 대한 해결책을 제시하는 작업이다. 문제점 - 부품 객체들이 서로 강하게 연결되어 있음. * 각 부품 객체들이 서로 필요한 객체들을 참조하고 있다. - 한 부품의 class가 변겨오딘다면 연관된 class들의 수정이 필요하다. - 자판기 제어프로그램의 제어흐름이 각 부품 class마다 흩어져 있어서, 새로운 부품이 추가되었을 때 이를 ..
-
[Design Pattern] 반복자(Iterator) 패턴 - 디자인 패턴CSE/Design Pattern 2015. 6. 13. 10:43
Pattern #14 반복자 패턴 자세한 표현방법을 나타내지 않고 객체집합의 요소들을 순차적으로 접근하는데 사용 패턴 요약 - 반복을 집합의 요소를 포인트하는 객체 안에 캡슐화 함 - 리스트 객체와 방문하는 프로세스 사이의 결합을 줄임 동기 당신은 기업정보 관리시스템 개발 프로젝트의 책임자로 선발되었다. 이 프로그램 은 크게 user interface, application logic, data management 세 파트로 나뉘는데 이들은 병렬적으로 개발된다. 개발 에 있어 한 가지 문제점 은 application logic 파트와 data management 파트와의 연결 부분이다 . 즉 , data management 파트에서 개발을 맡고 있는 data structure class의 interfac..
-
[Design Pattern] 인터프리터(Interpreter) 패턴 - 디자인 패턴CSE/Design Pattern 2015. 6. 13. 10:42
Pattern #13 인터프리터 패턴 간단한 언어의 문법을 정의하고 해석하는데 사용 패턴 요약 - 문법을 재귀적으로 표현 - 집합 객체에게 그 해석을 패스 동기 당신이 새롭게 맡은 일은 전략게임의 인공지능 부분에 대한 설계와 개발 작업이다. 게임의 인공지능은 수 많은 규칙(rule)들에 그 기반을 두고 있는데, 이러한 규칙들을 분석하고 실행하기 위해서는 논리식을 표현하고 계산할 수 있어야 한다. 변수와 논리곱(and), 논리합(or,) 부정(not), 상수(true, false)로 구성된 기본적인 predicate first logic을 표현하고 계산할 수 있는 논리 시스템을 설계하라. BNF로 문법 표현 BNF Syntax를 클래스다이어그램으로 표현 - 일반적으로 BNF로 표현된 Syntax의 언어를 ..