构建者模式-Builder、Director、Product

模式思想
将一个复杂对象的构造过程分成多个步骤来完成,一方面降低了构造函数的复杂性,同时增加了灵活性;

模式角色
(产品)Product:需要构造的对象
(工人)Builder:操作对象的具体类(set方法)
(图纸)Director:构造对象的流程

这里写图片描述

Product


public class HuaweiP9 implements IProduct{

    private String screen;
    private String battery;
    private String mainboard;
    private String cpu;
    public String getScreen() {
        return screen;
    }
    public void setScreen(String screen) {
        this.screen = screen;
    }
    public String getBattery() {
        return battery;
    }
    public void setBattery(String battery) {
        this.battery = battery;
    }
    public String getMainboard() {
        return mainboard;
    }
    public void setMainboard(String mainboard) {
        this.mainboard = mainboard;
    }
    public String getCpu() {
        return cpu;
    }
    public void setCpu(String cpu) {
        this.cpu = cpu;
    }

}

Builder

public class HuaweiP9Builder implements IPhoneBuilder {

    private final HuaweiP9 phone= new HuaweiP9();
    private String system;

    @Override
    public void buildScreen() {
        // TODO Auto-generated method stub
        phone.setScreen("1920 * 1280");
        System.out.println("HuaweiBuilder::we use the 1920 * 1280 Screen...");
    }

    @Override
    public void buildBattery() {
        // TODO Auto-generated method stub
        phone.setBattery("5000mAh");
        System.out.println("HuaweiBuilder::we use the 5000mAh battery...");
    }

    @Override
    public void buildMainboard() {
        // TODO Auto-generated method stub
        phone.setMainboard("reliable");
        System.out.println("HuaweiBuilder::we use the very reliable mainboard...");
    }

    @Override
    public void buildCpu() {
        // TODO Auto-generated method stub
        phone.setCpu("Kirin920");
        System.out.println("HuaweiBuilder::we use the Kirin920 CPU...");
    }

    public void setSystem(String system){
        this.system = system;
    }

    //add operate system...
    public void addSystem(){
        if(null == system)
            return;
        System.out.println("HuaweiBuilder::u add system"+system+"...");
    }

    //type 1: just get the result
    public IProduct getProduct(){
        return phone;
    }


    //type 2: implement the director within the builder
    public IProduct build(){
        buildScreen();
        buildBattery();
        buildMainboard();
        buildCpu();
        addSystem();
        return phone;
    }
}

Director

public class HuaweiP9Director {

    public IProduct direct(IPhoneBuilder builder ){
        builder.buildCpu();
        builder.buildMainboard();
        builder.buildScreen();
        builder.buildBattery();
        return builder.getProduct();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值