디자인패턴
-
Reactor 패턴디자인패턴 2014. 9. 3. 09:00
동시에 들어오는 서비스 처리 요청을 관리하는 이벤트 처리 패턴. 구조 Resources : 시스템에 입력을 제공하거나 시스템에서 나온 결과를 소비하는 모든 자원 Synchronous Event Demultiplexer : 모든 자원을 블록하기위해 이벤트 루프를 사용함. 자원에서 블록킹없이 동기화 연산을 시작할수 있게 됐을 때, 디멀티플렉서(Demultiplexer)가 자원을 디스패처에 보냄. Dispatcher : 요청 핸들러의 등록과 해제를 처리함. 디멀티플레서에서 연결된 요청 핸들러에 자원을 할당함. Request Handler : 요청 핸들러와 연결된 자원이 정의된 애플리케이션. 특징 모든 리엑터 시스템은 싱글 스레드임. 장점 리엑터 패턴은 리엑터 구현에서 애플리케이션에 관련된 코드가 완벽하게 분리..
-
행위패턴 : Visitor 패턴디자인패턴 2013. 3. 27. 09:00
분류 : 행위패턴(Behavioral Patterns) 정의 : 객체 구조에서 기능을 분리하는 패턴. 기존 객체의 구조를 수정하지 않고 새로운 기능을 추가할 수 있음. 용도 : 소스 public interface CarElementVisitor { void visit(Wheel wheel); void visit(Engine engine); void visit(Body body); void visit(Car car); } public interface CarElement { void accept(CarElementVisitor visitor); // CarElements have to provide accept(). } class Body implements CarElement { public void a..
-
행위패턴 : Template Method 패턴디자인패턴 2013. 3. 25. 09:00
분류 : 행위패턴(Behavioral Patterns) 정의 : 메소드에서 알고리즘의 뼈대를 정의하는 패턴. C++의 Template하고는 상관 없음. 용도 : 코드에서의 중복을 피하기 위해서임. 공통적인 작업흐름은 추상클래스쪽에 한번 정의하고, 나머지 다양한 구현들은 각각의 서브클래스들에서 담당함. 소스 /** * An abstract class that is common to several games in * which players play against the others, but only one is * playing at a given time. */ abstract class Game { protected int playersCount; abstract void initializeGame()..
-
행위패턴 : Strategy 패턴디자인패턴 2013. 3. 18. 09:00
분류 : 행위패턴(Behavioral Patterns) 정의 : 알고리즘의 동작이 실행시에 결정되는 패턴. 알고리즘의 집합을 정의하고 각각을 캡슐화 한 다음 해당 알고리즘들을 교환가능하게 만듬. 용도 : 입력 데이터의 검증을 수행할때 데이터의 타입에 따라 검증 알고리즘을 선택하도록 함. 소스 /** The classes that implement a concrete strategy should implement this. * The Context class uses this to call the concrete strategy. */ interface Strategy { int execute(int a, int b); } /** Implements the algorithm using the strateg..
-
행위패턴 : State 패턴디자인패턴 2013. 3. 11. 09:00
분류 : 행위패턴(Behavioral Patterns) 정의 : 객체의 상태에 따라 동일 루틴에서 다른 행동을 하는 패턴 용도 : 소스 interface Statelike { /** * Writer method for the state name. * @param STATE_CONTEXT * @param NAME */ void writeName(final StateContext STATE_CONTEXT, final String NAME); } public class StateA implements Statelike { /** (non-Javadoc) * @see state.Statelike#writeName(state.StateContext, java.lang.String) */ @Override publ..
-
행위패턴 : Observer 패턴디자인패턴 2013. 3. 4. 09:00
분류 : 행위패턴(Behavioral Patterns) 정의 : observer(옵저버, 관찰자)라고하는 종속성 목록을 관리하고, 목록에 속한 객체들에게 상태 변화를 통지하는 객체를 이용하는 패턴. 용도 : 분산 이벤트 핸들링 시스템에서 주로 사용됨. MVC(Model-View-Controller) 아키텍처 패턴에서 중용한 역할을 함. 소스 import java.util.Observable; //Observable is here import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class EventSource extends Observable implements Runnable..
-
행위패턴 : Memento 패턴디자인패턴 2013. 2. 28. 10:27
분류 : 행위패턴(Behavioral Patterns) 정의 : 객체의 이전 상태를 저장하는 기능을 제공하는 패턴. 용도 : originator와 caretaker 두개의 객체로 구현됨. originator : 내부 상태를 가지고 있는 객체. caretaker : originator에 어떤 행위를 하지만 변경사항을 되돌릴수 있는 기능이 있음. 소스 import java.util.List; import java.util.ArrayList; class Originator { private String state; // The class could also contain additional data that is not part of the // state saved in the memento. public ..
-
행위패턴 : Mediator 패턴디자인패턴 2013. 2. 28. 10:26
분류 : 행위패턴(Behavioral Patterns) 정의 : 여러개의 객체와 상호작용하는 것을 캡슐화하는 객체. 객체간의 결합도를 느슨하게 만듬. 용도 : Mediator - Colleague 객체간의 통신을 위한 인터페이스를 정의함. ConcreteMediator - Mediator 인터페이스를 구현하고 Colleague 객체간의 통신을 관리함. 모든 Colleagues와 Colleagues의 내부 통신 방법을 알고 있음. ConcreteColleague - Colleagues의 Mediator를 통해서 각 Colleagues간에 통신을 함. 소스 import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.Action..