자바를 이용한 디자인패턴 입문 19

디자인 패턴 Template Method 패턴

Template Method패턴 상위클래스에서 어떤 처리의 뼈대를 결정하고 하위 클래스에서 그 구체적인 내용을 결정하는 디자인 패턴입니다. 어렵지않은 패턴이라서 아래 코드들을 분석해보면 쉽게 이해하실수 있을겁니다. public abstract class AbstractDisplay { //추상메소드 3개 public abstract void open(); public abstract void print(); public abstract void close(); //추상메소드를 이용해서 메소드를 구현해둠 //추상메소드는 자식 클래스에서 구체화 될 예정 public final void display(){ open(); for(int i=0; i < 5; i++){ print(); } close(); } } ..

디자인 패턴 위임에 의한 Adapter 패턴(인스턴스를 이용한)

2번째 위임을 사용한 어댑터 패턴(인스턴스를 사용한) 소스를 보면 어떻게 인스턴스를 사용한 것인지 이해가 될 것입니다. public class Banner { private String string; Banner(String string){ this.string = string; } public void showWithParen(){ System.out.println("(" + string + ")"); } public void showWithAster(){ System.out.println("*" + string + "*"); } } public abstract class Print { public abstract void printWeak(); public abstract void printStron..

디자인 패턴 Adapter패턴 상속을 사용한 Adapter패턴

Adapter 패턴 노트북에 사용하는 어댑터처럼 이미 제공된것(ac220볼트) 과 필요한것 (dc 19v)의 차이를 없애주는 패턴방법 1. 클래스에 의한 Adapter 패턴(상속을 사용한 것) 2. 인스턴스에 의한 Adapter패턴(위임을 사용한 것) 첫번째 방법을 사용해 봅시다. 나오는 클래스를 설명하면 제공되고있는 것(ac220) Banner클래스(showWithParen, showWithAster) 어댑터 PrintBanner 클래스 필요한것(dc 19v) Print인터페이스(printWeak, printStrong) public class Banner { private String string; Banner(String string){ this.string = string; } public voi..

디자인패턴 Chain of Responsibility 패턴

책임의 사슬 패턴 핸드폰이 고장나면 일단 구매처에 물어보고 구매처는 as센터로 가라고 하고 as센터에서는 이건 못고친다고 하면서 용산 전문 수리점으로 가라고 한다. 이렇게 책임 떠넘기기를 디자인패턴으로 표현했다. Trouble 클래스 package kch; public class Trouble { //발생한 트러블을 표현하는 클래스 /** * @uml.property name="number" */ private int number;//트러블 번호 public Trouble(int number){ this.number = number;//트러블의 생성 } /** * @return * @uml.property name="number" */ public int getNumber(){ return number;..

디자인 패턴 Visitor 패턴

Visitor 클래스 package kch; public abstract class Visitor { public abstract void visit(File file); public abstract void visit(Directory directory); } Element 인터페이스 package kch; public interface Element {//방문자를 받아들임. public abstract void accept(Visitor v); } Entry 클래스 package kch; import java.util.Iterator; public abstract class Entry implementsElement{ public abstract String getName(); public abstr..

디자인 패턴 Decorator 패턴

처음에는 아래 링크에 들어가셔서 한번 읽어보시면 이 패턴을 이해하는데 아주 도움이 될 것 입니다. http://blog.naver.com/newsdu/80115957298 Display 클래스 package kch; public abstract class Display { public abstract int getColumns();//가로 문자수를 얻는다. public abstract int getRows();//세로 행수를 얻는다. public abstract String getRowText(introw);//row번째의 문자열을 얻는다. public final void show(){//전부 표시한다. for(int i=0 ; i < getRows() ; i++){ System.out.println(g..

디자인 패턴 Composite 패턴

처음에는 아래 링크에 들어가셔서 한번 읽어보시면 이 패턴을 이해하는데 아주 도움이 될 것 입니다. http://blog.naver.com/newsdu/80115957298 Entry 클래스 package kch; /** * @author kch */ public abstract class Entry { /** *@uml.property name="name" */ public abstract String getName(); public abstract int getSize(); publicEntry add(Entry entry) throws FileTreatmentException{ throw new FileTreatmentException(); } public void printList(){ printL..

디자인 패턴 Strategy 패턴

Strategy 인터페이스 package kch; public interface Strategy { public abstract Hand nextHand(); public abstract void study(booleanwin); } WinningStrategy 클래스 package kch; import java.util.Random; public class WinningStrategy implementsStrategy{ //이 클래스는 전판이 이기면 다음에도똑같은 것을 내는 전략을 취함 privateRandom random;//랜덤변수 생성 목적 private boolean won = false;//전판이 이겼는지 졌는지에 대한 필드 private HandprevHand;//전판에 내밀었던 손을 저장함..

디자인 패턴 Bridge 패턴

Bridge 패턴 기능의 클래스 계층 1. 상위 클래스는 기본적인 기능을 가지고 있다. 2. 하위 클래스에서 새로운 기능을 추가한다. 구현의 클래스 계층 1. 상위 클래스는 추상 메소드에 의해 인터페이스를 규정한다. 2. 하위 클래스는 구상 메소드에 의해 그 인터페이스를 구현한다. 구현은 실제 메소드의 내용을 써내려가는 것이고 기능은 그 메소드를 사용해서 어떠한 것을 수행한다고 생각하면 좋습니다. Display클래스는 다리의 역활 CountDisplay는 정의된 메소드 가져다가 자기맘대로 덧붙이는 기능 개선하는 역할 DisplayImpl는 메소드의 정의만 만들어둠. StringDisplayImpl은 메소드를 구현. Display 클래스 브릿지 패턴의 핵심이 되는 부분입니다. 실제로 다리의 역활을 하는중요..

반응형