【设计模式】建造者模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/as15932641664/article/details/82313573

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


      最近宝马在韩国真的“火”了,宝马车自燃次数多达30期,引起了韩国宝马车主的不安。经过调查,因为排气再循环系统出现了问题。

      大家都知道宝马这个品牌有很多种车型,宝马车主他无须关心这辆宝马是如何被生产出来的,是在哪生产的,他关注最后是不是他想要的车型就可以了。而宝马公司不管生产什么车型,工作流程是不变的,只是生产的形状和功能不相同。

      但是就像上面的例子,由于工程师的疏忽工作流程少做了某一步骤,导致了车子自燃的事情发生。所以我们需要一个指挥者,从来控制建造过程,顾客告诉指挥者需要什么样车型,根据顾客选择的车型去建造,建造过程中顾客就不需要知道了。这样的话生产过程不仅与车主没有了关联,还不会出现致命的错误。


  结构图

 

1.Builder(抽象建造者):它为创建一个产品Product对象的各个部件制定抽象接口,在该接口中一般声明两类方法,一类方法是buildPartX(),它们用于创建复杂对象的各个部件;另一类方法是getResult(),它们用于返回复杂对象。Builder即可以抽象类,也可以是接口

2.ConcreteBuilder(具体建造者):它实现了Builder接口,实现各个部件的具体构造和装配方法,定义并明确它所创建的复杂对象,也可以提供一个方法返回创建好的复杂产品对象

3.Product(产品角色):它是被构件的复杂对象,包含多个组成部件,具体建造者创建该产品的内部表示并定义它的装配过程

4.Director(指挥者):负责安排复杂对象的建造次序,指挥者与抽象建造者之间存在关联关系,可以在其construct()建造方法中调用建造者对象的部件构造与装配方法,完成复杂对象的建造。客户端一般只需要与指挥者进行交互,在客户端确定具体建造者类型,并实例化具体建造者对象,然后通过指挥者类的构造函数或者Setter方法将该对象传入指挥者类中。

猜你喜欢

转载自blog.csdn.net/as15932641664/article/details/82313573