Design Pattern - Builder
1. 클래스다이어그램
2. Source
1. 클래스다이어그램

- Display.java
package com.dazzilove.bridge.smaple1;
public class Display {
private DisplayImpl displayImpl;
public Display(DisplayImpl displayImpl) {
this.displayImpl = displayImpl;
}
public void open() {
displayImpl.rawOpen();
}
public void print() {
displayImpl.rawPrint();
}
public void close() {
displayImpl.rawClose();
}
public final void display() {
open();
print();
close();
}
} - CountDisplay.java
package com.dazzilove.bridge.smaple1;
public class CountDisplay extends Display {
public CountDisplay(DisplayImpl displayImpl) {
super(displayImpl);
}
public void multiDisplay(int times) {
open();
for(int i=0; iprint();
}
close();
}
} - DisplayImpl.java
package com.dazzilove.bridge.smaple1;
public abstract class DisplayImpl {
public abstract void rawOpen();
public abstract void rawPrint();
public abstract void rawClose();
} - StringDisplayImpl.java
package com.dazzilove.bridge.smaple1;
public class StringDisplayImpl extends DisplayImpl {
private String string;
private int width;
public StringDisplayImpl(String string) {
this.string = string;
this.width = string.getBytes().length;
}
@Override
public void rawOpen() {
printLine();
}
@Override
public void rawPrint() {
System.out.println("|" + string + " |");
}
@Override
public void rawClose() {
printLine();
}
private void printLine() {
System.out.print("+");
for(int i=0; iSystem.out.print("-");
}
System.out.println("+");
}
} - Main.java
package com.dazzilove.bridge.smaple1;
public class Main {
public static void main(String[] args) {
Display d1 = new Display(new StringDisplayImpl("Hello, Korea."));
Display d2 = new CountDisplay(new StringDisplayImpl("Hello, World."));
CountDisplay d3 = new CountDisplay(new StringDisplayImpl("Hellow, Universe."));
d1.display();
d2.display();
d3.display();
d3.multiDisplay(5);
}
}




덧글