设计模式四--建造者模式

定义

将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示

创建者模式中的角色

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:创建对象需要调用系统中别的复杂对象的时候

注:建造者模式关注零件类型和装配顺序
参考资料:设计模式之禅(二)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 没有人买车会只买一个轮胎或者方向盘,大家买的都是一辆包含轮胎、方向盘和发动机等多个部件的完整汽车。如何将这些部件组...
    justCode_阅读 1,916评论 1 6
  • 【学习难度:★★★★☆,使用频率:★★☆☆☆】直接出处:建造者模式梳理和学习:https://github.com...
    BruceOuyang阅读 793评论 0 5
  • 模式动机 无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮、方向...
    lijun_m阅读 423评论 0 0
  • 定义 建造模式是对象的创建模式。建造模式可以将一个产品的内部表象(internal representation)...
    步积阅读 7,032评论 1 7
  • 设计模式概述 在学习面向对象七大设计原则时需要注意以下几点:a) 高内聚、低耦合和单一职能的“冲突”实际上,这两者...
    彦帧阅读 3,804评论 0 14