본문 바로가기

Dev.../패턴자료

The Memento Pattern The Memento Pattern 어떤 객체의 내부 상태를 저장하고 그래서 후에 다시 저장 할 수 있게 한다 가정해 보자. 관념상으로는 저장할 수 있고 객체를 다시 생성하지 않고 재 저장할 수 있다. 이것이 Memento 패턴의 목적이다. Motivation객체들은 종종 public 메소드를 사용하여 그것들의 내부 상태의 단지 몇 개만 노출하지만, 나중에라도 그것을 다시 저장 해야 할 필요가 있을지도 모르기 때문에 어떤 객체의 전체적인 상태를 저장하고자 한다. 몇몇 경우에서 데이터를 저장하고 재 저장하는 public 인터페이스(그래픽 객체들의 위치를 그리는 것과 같은 것)로부터 충분한 정보를 얻을 수 있다. 다른 경우에는 색, 그림자, 각 과 다른 그래픽 객체들과의 관계 같은 정보는 쉽게 이용할 수 없.. 더보기
The State Pattern The State Pattern State 패턴은 관련된 다수의 클래스들 사이에서 대체할 수 있는 하나의 포괄적인 클래스를 갖고자 하고 현재 포함된 클래스를 호출하는 메소드를 전달하고자 할 때 이용된다. 디자인 패턴은 클래스를 바꾸기 위해 나타나는 포괄적인 객체와 같은 식으로 내부의 클래스들 사이를 대체하는데 State 패턴을 제안하였다. 자바에서는 조금 과장되었지만 실제적인 목적은 클래스들이 의미 있게 변경될 수 있도록 하는데 있다. 많은 프로그래머들은 약간 차이가 있는 계산이나 클래스에 전달된 아규먼트들을 토대로 한 다른 정보를 보여주는 것을 수행하는 클래스를 생성한 경험이 있다. 이것은 종종 수행해야 할 행위를 결정짓기 위해 클래스 내부에 switch 나 if-else 와 같은 문장의 종류를 이끌게.. 더보기
The Command Pattern The Command Pattern Chain of Responsibility 패턴은 클래스들의 체인들을 따라서 요청들을 진행하지만, Command 패턴은 특별한 모듈로 하나의 요청을 진행한다. 그것은 하나의 객체 내부의 특정한 동작을 위한 하나의 요청을 둘러싸고 알려진 public 인터페이스를 준다. 그것이 수행하게 될 실제적인 동작에 대한 알고 있는 것 없이 요청들을 만들 수 있는 능력을 클라이언트에게 주게 한다. 그리고 어떤 방식으로든 클라이언트 프로그램에 영향을 주는 것 없이 동작을 변경할 수 있도록 한다. Motivation자바 사용자 인터페이스를 만들 때, 메뉴 항목들, 버튼들, 그리고 체크 박스와 같은 것들을 제공해야 하고, 프로그램이 무엇을 하는지를 사용자에게 알여 줘야 한다. 사용자가 이.. 더보기
The Iterator Pattern The Iterator Pattern Iterator 는 디자인 패턴에서 가장 간단하고 가장 빈번하게 사용되는 패턴들 중의 하나이다. Iterator 패턴은 데이터의 내부적인 표현을 자세하게 아는 것 없이 표준적인 인터페이스를 이용한 데이터의 리스트나 컬렉션을 통하여 이동하는 것을 허용한다. 게다가 어떤 특별한 프로세싱과 데이터 컬렉션의 특정한 원소를 반환을 하는 특별한 Iterator를 정의할 수 있다. Motivation Iterator는 어떻게 Iterator 가 데이터를 이동시키는지를 드러내지 않고 데이터 원소들의 집합을 통하여 이동하는 정의된 Iterator는 인터페이스(interface)이기 때문에 반환되는 데이터를 위한 편리한 어떤 방법이든 구현할 수 있다.public interface It.. 더보기
The Interpreter Pattern The Interpreter Pattern 몇몇 프로그램들은 그것들이 수행할 수 있는 연산자들을 설명하는 언어를 갖는 것으로부터 이점을 얻는다. Interpreter 패턴은 일반적으로 언어에 대한 문법 정의를 묘사하고 언어에서 문장들을 해석하는 문법 사용을 묘사한다.Motivation프로그램이 다른 것들을 나타내지만 몇 가지는 유사한 경우가 있을 때 Interpreter 패턴은 이러한 경우들을 묘사하는 간단한 언어를 이용할 수 있는 이점이 있고, 언어를 해석하는 프로그램을 갖는다. 문제중의 하나는 우리가 다루어야 할 것이 언어가 도움을 줄 수 있을 때를 어떻게 인식하는가 이다. 매크로 언어의 리코더는 단순히 후에 재생되기 위한 메뉴와 키스트로크 연산자들을 기록한다. ApplicabilityInterpre.. 더보기
The Strategy Pattern The Strategy Pattern Strategy 패턴은 윤곽은 State 패턴과 많이 비슷하지만 의도하는 목적이 약간 다르다. Strategy 패턴은 Context라 불리는 드라이버 클래스에서 캡슐화된 다수의 관련된 알고리즘들로 구성된다. 클라이언트 프로그램은 다른 알고리즘을 선택하거나 어떤 경우에는 Context가 최상의 알고리즘을 선택할 수 있다. State 패턴과 같이 어떤 조건문의 덩어리 없이 알고리즘들을 쉽게 바꿀 수 있도록 하는 것이 의도이다. Motivation 특별한 서비스나 기능을 요구하는 프로그램과 기능을 수행하는 여러 가지 방법을 가지고 있는 것은 Strategy 패턴의 후보이다. 프로그램들은 컴퓨터 효율이나 사용자 선택을 기준으로 알고리즘을 선택한다. 우리가 여러 가지 다른 방.. 더보기
The Template Pattern The Template Pattern 하나 또는 그 이상의 메소드들을 파생된 클래스에 의해 구현하도록 남기는 부모 클래스를 작성할 때 마다 기본적으로 Template 패턴을 사용한다. Templeate 패턴은 클래스에서 알고리즘을 정의하는 것에 대한 생각을 형식화하지만 서브클래스에서 남겨진 것들에 대해 자세한 구현이 이루어 진다. 바꿔서 말하면 디자인 패턴에서 종종 발생하는 것처럼 base 클래스가 추상 클래스이면 Template 패턴의 간단한 형태를 이용한다. Motivation Template들은 기초적인 것이어서 아마 그것에 관한 생각조차 없이 수 십 번도 더 사용했을 것이다. Template 패턴 이면의 생각은 알고리즘의 몇몇 부분이 잘 정의되고 base 클래스에서 구현될 수 있고 반면에 다른 부.. 더보기
The Mediator Pattern The Mediator Pattern 어떤 프로그램이 여러 개의 클래스로 만들어져 있을 때 로직과 계산은 이러한 클래스로부터 논리적으로 나뉘어 진다. 그러나 이러한 고립적인 클래스들이 증가함에 따라 이러한 클래스들의 통신 문제가 보다 복잡해졌다. 다른 클래스의 메소드들에 대하여 아는 것이 필요한 클래스가 더 많아지고 클래스들의 구조는 더 얽혀 복잡해 진다. 이것이 프로그램을 읽는 것과 유지를 어렵게 한다. 게다가 프로그램을 변경하는 것이 어려운데 왜냐면 어떤 변화가 여러 개의 다른 클래스들에서 코드에 영향을 줄 지도 모르기 때문이다. Mediator 패턴은 이러한 클래스들 사이의 느슨한 커플링을 진행하여 이러한 문제를 해결할 수 있는 방법을 소개한다. Mediator는 다른 클래스들의 메소드들에 대한 정.. 더보기
The Chain of Responsibility Pattern The Chain of Responsibility Pattern Chain of Responsibility 패턴은 다른 클래스들의 능력에 관해 아는 것 없이 어떤 요청을 조정하려 하는 클래스들을 허용하는 패턴이다. 그것은 이러한 클래스들 사이에 느슨한 커플링을 제공한다; 오직 공통적인 링크는 그것들 사이에서 전달되는 요청이다. 그 요청은 클래스들 중의 하나가 그것을 다룰 수 있을 때 까지 전달된다. 그러한 체인 패턴 중의 하나의 예는 도움말 시스템이다. 도움말에 대한 영역을 선택했을 때, 컨트롤들이 그 체인의 ID 나 이름을 진행시킨다. 우리가 "New" 버튼을 선택했을 때를 가장해 보자. 만약 첫 번째 모듈이 New 버튼을 조정할 수 있다면 그것을 도움말 메시지를 표시한다. 그렇지 않다면 다음 모듈에 .. 더보기
The Observer Pattern The Observer Pattern 복잡한 윈도우 세계에서 우리는 종종 데이터를 하나 이상의 폼으로 동시에 보여주고 싶고 그 데이타에서 어떤 변화라도 반사하여 보여주고 싶을 때가 있다. 예를 들어 주식 가격의 변화를 그래프와 테이블이나 리스트로 표현할 지도 모른다. 매 시간 마다 가격은 변하고 우리의 어떤 조작 없이 동시에 변화를 두 가지 방법으로 표현하기를 기대하게 될 것이다. 우리는 우리가 행위를 볼 수 있는 Excel과 같은 윈도우 어플리케이션들이 있기 때문에 행위의 정렬을 기대한다. 이런 방식으로 작동하는 프로그램에 대해서는 Observer 디자인 패턴이 유용하게 사용될 수 있다. Observer 패턴은 데이터를 포함하는 객체는 데이터를 보여주는 객체로부터 분리된다는 것을 가정하고 이 보여주는 .. 더보기