阅读背景:

builder模式

来源:互联网 
interface IBuilder { public void buildCPU(); public void buildScreen(); public void buildBattery(); public Phone getPhone(); } public class Builder { public static void main(String[] args) { Designer ds = new Designer(); IBuilder appleBuilder = new AppleBuilder(); ds.buildPhone(appleBuilder); Phone apple = appleBuilder.getPhone(); System.out.println(apple); IBuilder samsungBuilder = new SamsungBuilder(); ds.buildPhone(samsungBuilder); Phone samsung = samsungBuilder.getPhone(); System.out.println(samsung); } } class Designer { public void buildPhone(IBuilder builder) { System.out.println("begin build phone "); builder.buildCPU(); builder.buildBattery(); builder.buildScreen(); System.out.println("end build phone..."); } } class AppleBuilder implements IBuilder { private Phone phone = new Apple(); public void buildCPU() { System.out.println("build CPU: Qualcomm"); phone.add("CPU: Qualcomm"); } public void buildScreen() { System.out.println("build SCREEN: JDI"); phone.add("SCREEN: JDI"); } public void buildBattery() { System.out.println("build BATTERY: DeSai"); phone.add("BATTERY: DeSai"); } public Phone getPhone() { return this.phone; } } class SamsungBuilder implements IBuilder { private Phone phone = new Samsung(); public void buildCPU() { System.out.println("build CPU: MTK"); phone.add("CPU: MTK"); } public void buildScreen() { System.out.println("build SCREEN: Samsung"); phone.add("SCREEN: Samsung"); } public void buildBattery() { System.out.println("build BATTERY: DeSai"); phone.add("BATTERY: DeSai"); } public Phone getPhone() { return this.phone; } } abstract class Phone { protected List<String> parts = new ArrayList<String>(); public void add(String part) { this.parts.add(part); } public abstract String getBrand(); @Override public String toString() { StringBuilder result = new StringBuilder(); result.append(this.getBrand()).append("手机信息:"); for (String part : parts) result.append(part).append(" "); return result.toString(); } } class Apple extends Phone { @Override public String getBrand() { return "Apple"; } } class Samsung extends Phone { @Override public String getBrand() { return "Samsung"; } } interface IBuilder { public void buildCPU(); publi


你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: