定义
将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示
创建者模式中的角色
1:抽象创建者角色(Builder)
该角色用于规范产品的各个组成部分,并且进行抽象,一般独立于应用程序的逻辑
public abstract class Builder{ //抽象方法,设置产品的各个部分 public abstract void setPart1(); public abstract void setPart2(); public abstract void setPart3(); //生产产品的方法 public abstract Product builderProduct();}
2:具体建造者(ConcreteBuilder)
该角色实现抽象建造者中定义的方法并且返回一个组建好的产品实例
public class ConcreteBuilder extends Builder{ private Product product = new Product(); @override public void setPart1(){ } @override public void setPart2(){ } @override public void setPart3(){ } @override public Product builderProduct(){ return product; }}
3:产品角色(Product)
该角色是创建者模式中的一个复杂对象,有很多个不同的组成部分
public classProduct{ //产品业务具体逻辑}
4:导演者角色(Director)
该角色负责安排已有的顺序模块,并且告诉Builder开始构建
public class Director{ private Builder builder = new ConcreteBuilder(); public Product build(){ //设置好组件 build.setPart1(); build.setPart2(); build.setPart3(); //返回具体产品 return build.builderProduct(); }}
调用代码示例:
public class BuilderTest{ public static void main(String [] args){ //获取导演者 Director director = new Director(); //获取产品 Product product = director.build(); }}
优点
1:封装性能对外封闭产品内部细节
2:建造者独立,易于扩展
3:便于控制细节风险,改变细节不影响其他模块
使用场景
1:相同方法不同执行顺序的时候
2:多个部件组装导致不同运行结果的时候
3:产品类比较复杂的时候
4:创建对象需要调用系统中别的复杂对象的时候
注:建造者模式关注零件类型和装配顺序
参考资料:设计模式之禅(二)
文章转载于:https://www.jianshu.com/p/fad33f064e80
原著是一个有趣的人,若有侵权,请通知删除
还没有人抢沙发呢~