设计模式-建造者模式

核心:将产品和产品建造过程解耦

基本介绍

  1、建造者模式又叫生成器模式,是一种对象构建模式,可以将复杂对象的建造过程抽象出来,是这个抽象过程的不同实现方法可以构造出不同表现的对象

  2、建造者模式是一步一步创建一个复杂的对象,允许用户止痛膏知道复杂对象的类型和内容就可以构建他们,用户不需要知道内部的具体构建细节

四个角色

  1、product-》产品角色,一个具体的产品对象

  2、builder-》抽象建造者,创建一个product对象的各个部分知道的接口/抽象类

  3、concretebuilder-》具体建造者,实现接口,构建和装配各个部件

  4、director-》指挥者,构建一个使用builder接口的对象,主要用于创建一个复杂的对象。主要两个作用,隔离了客户与对象的生产过程,复杂控制产品对象的生产过程

代码示例:房屋构建

  产品角色

  

  抽象建造者

 

   具体建造者

  

   指挥者

  

jdk中的使用

  stringbulider角色划分

    Appendable接口定义了多个append方法,因此append为抽象建造者

    AbstractStringBulder实现了appendable 接口方法,这里的abstractStringBulder已经是建造者,只是不能实例化

    StringBuilder 充当了指挥者角色,也充当了具体的建造者

注意事项

  1、客户端不必知道产品内部组成的细节,将产品本身与产品的创建过场解耦,是的相同的创建过场可以创建不同的产品对象

  2、每个具体的建造者都相对独立,耳语其他的具体建造者无关用户使用不同的具体建造者即可得到不同的产品对象

  3、可以更加精细的控制产品的创建过程,将复杂产品的创建步骤分解在不同的方法中,是的创建过程更加清晰,也更方便使用程序来控制创建过程

  4、增加新的具体建造者无需修改原有类库的代码,指挥者针对抽象创造者类编程,系统拓展方便,符合开闭原则

  5、建造者模式所创建的产品一般具备较多的共同点,如果产品之间的差异性很大,则不适合使用建造者模式

  6、如果产品内部变化复制,可能会导致需要定义很多具体创造者类来实现者中变化导致系统变得很庞大,这种情况需要慎重选择

posted @ 2020-10-28 10:12  一个丶疯子  阅读(66)  评论(0)    收藏  举报