博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式建造者
阅读量:7061 次
发布时间:2019-06-28

本文共 1929 字,大约阅读时间需要 6 分钟。

建造者模式 设计原则:遵循单一职责、开闭原则 常用场景:需要构建一批构建过程相同但表示不同的产品,而构建过程非常复杂 使用概率:10% 复杂度:中 变化点:产品的表示 选择关键点:各个产品的构建过程是否相同 逆鳞:指挥者不能正常工作 主要思想: 把类的实例化交给建造者去进行赋值和实例化 这里可以把建造者进行抽象化,就有了抽象建造者和实际建造者 把建造者建造顺序等进一步简化就有了导演 最简单
public class Product {    private String name;    private String type;    public void setName(String name) {        this.name = name;    }    public void setType(String type) {        this.type = type;    }}public class BuilderA {    Product productA;    public BuilderA() {        productA = new Product();    }    public void buildName() {        productA.setName("nameA");    }    public void buildType() {        productA.setType("typeA");    }}public class BuilderB {    Product productB;    public BuilderB() {        productB = new Product();    }    public void buildName() {        productB.setName("nameB");    }    public void buildType() {        productB.setType("typeB");    }}

 

 

建造者抽象化 形成抽象建造者和实际建造者

public interface Builder {    public void buildName();    public void buildType();    public Product getProduct();}public class BuilderA implements Builder{    Product productA;    public BuilderA() {        productA = new Product();    }    public void buildName() {        productA.setName("nameA");    }    public void buildType() {        productA.setType("typeA");    }    @Override    public Product getProduct() {        return productA;    }}public class BuilderB implements Builder{    Product productB;    public BuilderB() {        productB = new Product();    }    public void buildName() {        productB.setName("nameB");    }    public void buildType() {        productB.setType("typeB");    }    @Override    public Product getProduct() {        return productB;    }}

 

建造者干事简化

public class Director {    public Product constructProduct(Builder builder) {        builder.buildName();        builder.buildType();        return builder.getProduct();    }}

 

转载于:https://www.cnblogs.com/zhaojj/p/7767185.html

你可能感兴趣的文章
CentOS命令登录MySQL时,报错ERROR 1045 (28000)
查看>>
jsp下拉框中显示数据库信息&&jsp 下拉框从数据库中如何取值?
查看>>
Linux系统编程 --- 共享内存及内存映射【十全十美】
查看>>
如何创建一个swap文件
查看>>
mysql联合索引
查看>>
我的友情链接
查看>>
H5页面快速搭建之高级字体应用实践
查看>>
centos6.5、centos6.6修改ssh默认端口号
查看>>
文本文件和二进制文件
查看>>
轻量级smurf源码
查看>>
linux下桌面环境的介绍及VNC的使用
查看>>
深浅拷贝——string
查看>>
主从复制模式下跳过错误
查看>>
剑指offer17
查看>>
samba文件共享
查看>>
WannaCry勒索软件还在继续传播和感染中
查看>>
TarsGo新版本发布,支持protobuf,zipkin和自定义插件
查看>>
Snap up RS3gold 3500M 60% off rs3 for sale &learn
查看>>
oracle函数
查看>>
json与String的转化
查看>>