본문 바로가기

design pattern

Decorator 패턴에 대한 생각 정리 안녕하세요.오늘은 Decorator 패턴에 대해 생각이 정리된 부분을 이야기 해볼까 합니다. Decorator 패턴에 대한 설명은 위의 링크를 따라 들어가서 보시면 될 것 같구요. Decorator패턴은 굉장히 간단하고 멋져보이는 패턴입니다.저도 처음 봤을 때 "우와~ 이런방법이 있구나~" 하면서 놀랐죠. 하지만 막상 실전에 어떻게 활용해야할 지 막막하더군요...그래서 내린 결론은 디자인 패턴을 이해한다는 것은 단순히 클래스 관계를 이해하는 것뿐만 아니라, 언제 어떤 의도로 이 패턴이 사용될 수 있는지를 이해하는게 더 중요하다.라는 것 입니다. 많은 책에서 Decorator패턴을 설명할 때에 커피의 가격 계산에 대한 예를 사용하거나, 윈도우에 스크롤뷰와 프레임을 붙이는 등의 상황을 예로 듭니다. 그런데 .. 더보기
Template method pattern 먼저 이 글은 영문 위키의 글을 번역한 글임을 알려드립니다. 영어실력이 부족한 관계로 오역이 있을 수도 있습니다. 원문주소 : http://en.wikipedia.org/wiki/Template_method_pattern Behavioral - Template method pattern 소프트웨어 공학(software engineering)에서 template method pattern은 디자인 패턴(design pattern) 중 하나이다. 행위적 패턴(behavioral pattern) 중 하나이고, C++ templates와는 무관하다. 도입 Introduction template method 는 특정 알고리즘의 프로그램 스켈레톤(program skeleton)을 정의한다. 하나 이상의 알고리즘 단.. 더보기
Strategy pattern 먼저 이 글은 영문 위키의 글을 번역한 글임을 알려드립니다.영어 실력이 부족한 관계로 오역이 있을 수도 있습니다.원문 주소 : http://en.wikipedia.org/wiki/Strategy_pattern Behavioral - Strategy Pattern 컴퓨터 프로그래밍(computer programming)에서 policy pattern이라고도 알려져 있는 strategy pattern은 런타임 시에 알고리즘(algorithms)을 선택할 수 있는 특별한 디자인 패턴(software design pattern) 중 하나이다. 형식적으로 말하면 strategy 패턴은 알고리즘 군(family)을 정의하고, 각각을 캡슐화해서 서로 바꿔가며 쓸 수 있게 한다. strategy는 그를 사용하는 클라이.. 더보기
State pattern 먼저 이 글은 영문 위키의 글을 번역한 글임을 알려드립니다. 영어 실력이 부족한 관계로 오역이 있을 수도 있습니다. 원문 주소 : http://en.wikipedia.org/wiki/State_pattern Behavioral - State Pattern Strategy Pattern과 매우 닮은 state 패턴은 행위적 디자인 패턴(behavioral software design pattern)인데, 상태를 위한 객체 패턴(objects for states pattern)이라고도 알려져 있다. 이 패턴은 어떤 객체의 상태를 나타내기 위해 컴퓨터 프로그래밍(computer programming)에서 사용된다. 이는 런타임시에 어떤 객체를 부분적으로 변화시키기에 명확한 방법이다. 구조 Structure 예.. 더보기
Observer pattern 먼저 이 글은 영문 위키의 글을 번역한 글임을 알려드립니다.영어 실력이 부족한 관계로 오역이 있을 수도 있습니다.원문 주소 : http://en.wikipedia.org/wiki/Observer_pattern Behavioral - Observer pattern 옵저버(observer) 패턴은 subject라 불리는 객체(object)가 observer라 불리는 객체들의 리스트를 관리하고, 상태변화가 있으면 알아서 옵저버 객체들에게 알려주는(종종 옵저버의 메서드 methods를 호출함으로써 알려주는) 디자인 패턴(software design pattern)이다. 이 패턴은 주로 분산된 이벤트 처리(event handling) 시스템에서 사용된다. 또한 옵저버는 MVC 패턴의 중요한 부분이기도 하다.사실,.. 더보기
Memento pattern 먼저 이 글은 영문 위키의 글은 번역한 글임을 알려드립니다. 영어 실력이 부족한 관계로 오역이 있을 수도 있습니다. 원문 주소 : http://en.wikipedia.org/wiki/Memento_pattern Behavioral - Memento pattern memento 패턴은 객체의 이전 상태를 저장하는 방법을 제공하는 소프트웨어 디자인 패턴(software design pattern)이다. (롤백을 통한 취소(undo)와 같은 예가 있다.) memento 패턴은 originator(창작자, 시조)와 caretaker(경비원, 관리인)라는 두개의 객체로 구현된다. Originator는 내부 상태(state)를 가지고 있는 객체이다. Caretaker는 originator에게 어떤 동작을 하지만 변.. 더보기
Mediator pattern 먼저 이 글은 영문 위키의 글을 번역한 글 임을 알려드립니다. 영어 실력이 부족한 관계로 오역이 있을 수도 있습니다. 원문 주소 : http://en.wikipedia.org/wiki/Mediator_pattern Behavioral - Mediator pattern mediator pattern은 한 집합의 객체들이 어떻게 상호작용하는지를 캡슐화 한 객체를 정의한다. 이 패턴은 프로그램이 동작하는 행위를 변경할 수 있기 때문에 behavioral pattern으로 간주된다. 보통 한 프로그램은 많은 클래스들(classes)로 만들어 진다. 그래서 논리(logic)과 계산(computation)이 이런 클래스들 사이에 분산되어 있다. 하지만 더 많은 클래스들이 만들어질수록 클래스들 간의 의사소통(comm.. 더보기
Iterator pattern 먼저 이 글은 영문 위키의 글을 번역한 글임을 알려드립니다.영어 실력이 부족한 관계로 오역이 있을 수도 있습니다.원문 주소 : http://en.wikipedia.org/wiki/Iterator_pattern Behavioral - Iterator pattern 객체지향 프로그래밍(object-oriented programming)에서, 이터레이터 패턴(iterator pattern)은 반복자(iterator)가 컨테이너(container)(List, Set, Map등을 말합니다.)를 돌면서 컨테이너의 요소(elements)에 접근하는 디자인 패턴(design pattern)이다. ; 어떤 경우에 컨테이너에 특화된 알고리즘이 필요한 경우가 있고 따라서 이런 부분은 컨테이너와의 독립성을 유지하기 힘들다. .. 더보기
Interpreter pattern 먼저 이 글은 영문 위키의 글을 번역한 글임을 알려드립니다. 영어 실력이 부족한 관계로 오역이 있을 수도 있습니다. 원문 주소 : http://en.wikipedia.org/wiki/Interpreter_pattern Behavioral pattern - Interpreter pattern 컴퓨터 프로그래밍(computer programming)에서 interpreter pattern은 어떤 언어에서 어떻게 문장들을 평가할지를 결정하는 디자인 패턴(design pattern)이다. 기본 개념은 특화면 컴퓨터 언어(specialized computer language)에서 각 심볼(terminal 또는 nonterminal)에 대한 클래스(class)를 가지는 것이다. 언어의 어떤 문장에 대한 문맥 트리(.. 더보기
Command Pattern 먼저 이 글은 영문 위키의 글을 번역한 글임을 알려드립니다. 영어 실력이 부족한 관계로 오역이 있을 수도 있습니다. 원문 주소 : http://en.wikipedia.org/wiki/Command_pattern Behavioral pattern - Command Pattern 객체 지향 프로그래밍(object-oriented programming)에서 command pattern(이하 커맨드 패턴)은 나중에 호출할 메서드를 위한 모든 정보를 대표(represent)하고 캡슐화(encapsulate)하는 디자인 패턴(design pattern)이다. 이 정보에는 메서드 이름, 메서드를 소유하고 있는 객체 그리고 메서드 인자에 필요한 값들을 포함하고 있다. 커맨드 패턴과 항상 연관되는 세가지 조건은 클라이언.. 더보기