建造者模式
构建一个复杂的产品。分离了对象子组件的单独构造(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();
}
}