본문 바로가기

Java/design pattern

bridge pattern @Test public void test() { Display d1 = new Display(new StringDisplayImpl("Hello, Korea.")); Display d2 = new CountDisplay(new StringDisplayImpl("Hello, world.")); CountDisplay d3 = new CountDisplay(new StringDisplayImpl("Hello, Universe.")); d1.display(); d2.display(); d3.display(); d3.multiDisplay(5); } package com.tistory.temp.pattern.bridge; /** * 기능의 클래스 계층 * */ public class Display { priva.. 더보기
builder pattern package com.tistory.temp.pattern.builder; public class BuilderTest { public static void main(String[] args) { if (args.length != 1) { usage(); System.exit(0); } if (args[0].equals("plain")) { TextBuilder textbuilder = new TextBuilder(); Director director = new Director(textbuilder); director.construct(); String result = textbuilder.getResult(); System.out.println(result); } else if (args[0].equa.. 더보기
Prototype Pattern @Test public void test() { Manager manager = new Manager(); UnderlinePen upen = new UnderlinePen('~'); MessageBox mbox = new MessageBox('*'); MessageBox sbox = new MessageBox('/'); manager.register("strong box", upen); manager.register("warning box", mbox); manager.register("slash box", sbox); Product p1 = manager.create("strong box"); p1.use("Hello, world."); Product p2 = manager.create("warnin.. 더보기
Singleton Pattern @Test public void test_001() { System.out.println("Start."); Singleton obj1 = Singleton.getInstance(); Singleton obj2 = Singleton.getInstance(); if (obj1 == obj2) { System.out.println("obj1과 obj2는 같은 인스턴스입니다."); } else { System.out.println("obj1과 obj2는 다른 인스턴스입니다."); } System.out.println("End."); } @Test public void test_002() { System.out.println("Start."); Singleton2 obj1 = Singleton2.getInsta.. 더보기
Template Pattern @Test public void test() { AbstractDisplay d1 = new CharDisplay('H'); AbstractDisplay d2 = new StringDisplay("Hello, world."); AbstractDisplay d3 = new StringDisplay("안녕하세요."); d1.display(); d2.display(); d3.display(); } package com.tistory.tazz009.pattern; public abstract class AbstractDisplay { public abstract void open(); public abstract void print(); public abstract void close(); public fina.. 더보기
Factory Pattern package com.tistory.tazz009.iterator; public abstract class Factory { public final Product create(String owner) { Product p = createProduct(owner); registerProduct(p); return p; } protected abstract Product createProduct(String owner); protected abstract void registerProduct(Product product); } package com.tistory.tazz009.iterator; public abstract class Product { public abstract void use(); } pa.. 더보기
Adapter Pattern - 01 상속을 사용한 Adapter 패턴 /** * 상속을 사용한 Adapter 패턴 * @throws Exception */ @Test public void adapterPatternTest_001() throws Exception { Print p = new PrinterBanner("Hello"); p.printWeak(); p.printStrong(); } package com.tistory.tazz009.pattern; public class Banner { private String string; public Banner(String string) { this.string = string; } public void showWithParen() { System.out.println("(" + strin.. 더보기
Iterator Pattern package com.tistory.tazz009.iterator; public interface Iterator { public boolean hasNext(); public Object next(); } package com.tistory.tazz009.iterator; public interface Aggregate { public Iterator iterator(); } package com.tistory.tazz009.iterator; public class Book { private String name; public Book() { } public Book(String name) { this.name = name; } public String getName() { return name; } .. 더보기