본문 바로가기

반응형

프로그래밍/자바 디자인 패턴

(22)
자바 디자인 패턴 튜토리얼 - 구조 설계 패턴 - 복합 패턴 복합 패턴은 구조 패턴이므로 오브젝트 그룹의 트리 구조를 생성합니다.복합 패턴은 객체 그룹을 단일 객체로 취급합니다.복합 패턴은 하나의 클래스를 사용하여 트리 구조를 나타냅니다.복합 패턴에서 우리는 클래스를 생성합니다. 그 클래스는 자체 객체 그룹을 포함합니다.예제다음 코드는 Employee 클래스를 사용하여 복합 패턴을 보여줍니다. import java.util.ArrayList;import java.util.List;class Employee { private String name; private String title; private List subordinates; public Employee(String name,String title) { this.name = name; this.title =..
자바 디자인 패턴 튜토리얼 - 구조 설계 패턴 - 데코레이터 패턴 데코레이터 패턴은 구조를 연결하지 않고 기존의 객체에 새로운 기능을 추가합니다.기존 클래스에 대한 래퍼 역할을하는 구조 패턴입니다.데코레이터 패턴은 데코레이터 클래스를 작성하여 원래 클래스를 래핑하고 추가 기능을 제공합니다.예제 interface Printer { void print(); } class PaperPrinter implements Printer { @Override public void print() { System.out.println("Paper Printer"); } } class PlasticPrinter implements Printer { @Override public void print() { System.out.println("Plastic Printer"); } } abst..
자바 디자인 패턴 튜토리얼 - 구조 설계 패턴 - 퍼사드 패턴 퍼사드 패턴은 시스템의 복잡성을 숨깁니다.클라이언트에 대한 간단한 인터페이스를 제공하고 클라이언트는 인터페이스를 사용하여 시스템과 상호 작용합니다.퍼사드 패턴은 구조 설계 패턴입니다.예제 class ShapeFacade { interface Shape { void draw(); } class Rectangle implements Shape { @Override public void draw() { System.out.println("Rectangle::draw()"); } } class Square implements Shape { @Override public void draw() { System.out.println("Square::draw()"); } } class Circle implements ..
자바 디자인 패턴 튜토리얼 - 구조 설계 패턴 - 프록시 패턴 프록시 패턴에서 클래스는 다른 클래스의 기능을 나타냅니다. 프록시 패턴은 구조 패턴입니다. 프록시 패턴에서는 원래의 인터페이스로 객체를 생성하여 기능을 외부 세계에 노출합니다. 예제 interface Printer { void print(); } class ConsolePrinter implements Printer { private String fileName; public ConsolePrinter(String fileName){ this.fileName = fileName; } @Override public void print() { System.out.println("Displaying " + fileName); } } class ProxyPrinter implements Printer{ priv..
자바 디자인 패턴 튜토리얼 - 행동 디자인 패턴 - 책임 연쇄 패턴 책임 연쇄 패턴은 요청에 대한 수신자 오브젝트 목록을 작성합니다. 이 패턴은 행동 패턴입니다. 책임 연쇄 패턴을 사용할 때, 일반적으로 각 수신기는 다른 수신기에 대한 참조를 포함합니다. 한 객체가 요청을 처리 할 수 ​​없으면 다음 객체로 전달합니다. 예제 abstract class Logger { protected Logger nextLogger; public void setNextLogger(Logger nextLogger){ this.nextLogger = nextLogger; } public void logMessage(String message){ log(message); if(nextLogger !=null){ nextLogger.logMessage(message); } } abstract ..
자바 디자인 패턴 튜토리얼 - 행동 디자인 패턴 - 자바 명령 패턴 명령 패턴은 데이터 기반 디자인 패턴입니다. 이것은 행동 패턴 중 하나입니다. 요청은 객체 아래에 명령으로 래핑되고 호출자 객체로 전달됩니다. Invoker 객체는 해당 객체에 명령을 전달하고 해당 객체는 명령을 실행합니다. 예제 import java.util.ArrayList; import java.util.List; interface Command { void execute(); } class MouseCursor { private int x = 10; private int y = 10; public void move() { System.out.println("Old Position:"+x +":"+y); x++; y++; System.out.println("New Position:"+x +":"+y..
자바 디자인 패턴 튜토리얼 - 행동 디자인 패턴 - 반복자 패턴 반복자 패턴(iterator pattern)은 객체 지향 프로그래밍에서 반복자를 사용하여 컨테이너를 가로지르며 컨테이너의 요소들에 접근하는 디자인 패턴이다. 반복자 패턴은 컨테이너로부터 알고리즘을 분리시키며, 일부의 경우 알고리즘들은 필수적으로 컨테이너에 특화되어 있기 때문에 분리가 불가능하다. 이를테면, SearchForElement라는 가설적 알고리즘은 일반적으로 컨테이너에 특화된 알고리즘으로서 구현하지 않고 반복자 유형을 사용하여 구현할 수 있다. 이는 필요한 반복자 유형을 지원하는 컨테이너에 SearchForElement를 사용할 수 있게 한다. 예제 interface Iterator { public boolean hasNext(); public Object next(); } class Lette..
자바 디자인 패턴 튜토리얼 - 행동 디자인 패턴 - 옵저버 패턴 옵서버 패턴(observer pattern)은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용된다. 발행/구독 모델로 알려져 있기도 하다.\ 예제 import java.util.ArrayList; import java.util.List; class MyValue { private List observers = new ArrayList(); private int state; public int getState() { return state; } public void setState(int state) { this.st..
자바 디자인 패턴 튜토리얼 - 행동 디자인 패턴 - 자바 인터프린터 패턴 일반적으로 인터프리터 패턴을 사용하여 언어 문법이나 표현을 평가합니다. 이 유형의 패턴은 행동 패턴 중 하나입니다. 예제 interface Expression { public boolean evaluate(String context); } class IsInExpression implements Expression { private String data; public IsInExpression(String data) { this.data = data; } @Override public boolean evaluate(String context) { if (context.contains(data)) { return true; } return false; } } class OrExpression impleme..
자바 디자인 패턴 튜토리얼 - 행동 디자인 패턴 - 상태 패턴 상태 패턴에서 클래스 동작은 상태에 따라 변경됩니다. 상태 패턴은 행동 패턴입니다. 상태 패턴을 사용할 때 다양한 상태 객체와 상태 객체가 변경 될 때마다 동작이 달라지는 컨텍스트 객체를 만듭니다. 예제 interface State { public void doAction(Context context); } class StartState implements State { public void doAction(Context context) { System.out.println("In start state"); context.setState(this); } public String toString() { return "Start State"; } } class StopState implements State..

반응형