建造者模式
構建一個複雜的產品。分離了對象子組件的單獨構造(Builder來負責,可以用工廠模式生產組件)和組裝(Director來負責),可以構造出複雜的對象,實現了構造和組裝的解耦。不同的構造器和不同的組裝相互搭配,做出不同的對象。
各個組件:
Class Screen{…}
class Battery{…}
class Mainboard{…}
public class Iphone {
private Screen screen;
private Mainboard mainboard;
private Battery battery;
public void start() {
System.out.println("開機....");
System.out.println("Happy中....");
}
public Screen getScreen() {
return screen;
}
public void setScreen(Screen screen) {
this.screen = screen;
}
public Mainboard getMainboard() {
return mainboard;
}
public void setMainboard(Mainboard mainboard) {
this.mainboard = mainboard;
}
public Battery getBattery() {
return battery;
}
public void setBattery(Battery battery) {
this.battery = battery;
}
}
手機實體:
public class Iphone {
private Screen screen;
private Mainboard mainboard;
private Battery battery;
public void start() {
System.out.println("開機....");
System.out.println("Happy中....");
}
public Screen getScreen() {
return screen;
}
public void setScreen(Screen screen) {
this.screen = screen;
}
public Mainboard getMainboard() {
return mainboard;
}
public void setMainboard(Mainboard mainboard) {
this.mainboard = mainboard;
}
public Battery getBattery() {
return battery;
}
public void setBattery(Battery battery) {
this.battery = battery;
}
}
生產組件:
/**
* 生產組件
* @author Administrator
*
*/
public interface IphoneBuilder {
Screen builderScreen();
Mainboard builderMainboard();
Battery builderBattery();
}
構建小米組件,可以通過工廠模式獲得這些組件:
/**
* 構建小米組件,可以通過工廠模式獲得這些組件
* @author Administrator
*
*/
public class MiIphoneBuilder implements IphoneBuilder {
@Override
public Screen builderScreen() {
// TODO 自動生成的方法存根
System.out.println("小米屏幕構建完成");
return new Screen("小米屏幕");
}
@Override
public Mainboard builderMainboard() {
// TODO 自動生成的方法存根
System.out.println("小米主板構建完成");
return new Mainboard("小米主板");
}
@Override
public Battery builderBattery() {
// TODO 自動生成的方法存根
System.out.println("小電池構建完成");
return new Battery("小米電池");
}
}
組裝手機:
public interface IphoneDirector {
/**
* 組裝手機
* @return
*/
Iphone directorIphone();
}
public class MiIphoneDirector implements IphoneDirector {
private IphoneBuilder builder;
public MiIphoneDirector() {
builder=new MiIphoneBuilder();
}
@Override
public Iphone directorIphone() {
// TODO 自動生成的方法存根
Battery battery = builder.builderBattery();
Mainboard mainboard = builder.builderMainboard();
Screen screen = builder.builderScreen();
Iphone iphone=new Iphone();
iphone.setBattery(battery);
iphone.setMainboard(mainboard);
iphone.setScreen(screen);
return iphone;
}
}
public class Client {
public static void main(String[] args) {
IphoneDirector director=new MiIphoneDirector();
Iphone miiphone = director.directorIphone();
System.out.println(miiphone.getBattery().getName());
miiphone.start();
}
}