builder模式一般是用在创建一个较为复杂的对象,通过且该对象会因为参数的不同最终而有所差别,而builder模式则主要是用于封装这个创建过程,其实现过程如下
现在我们来解读一下这张图,我听喜欢这种使用图片的形式展示思想的,因为代码虽然具有语义的单一性,但是其可读性并不是很强,但是图片就不存在这种问题,
Builder类是一个抽象基类,图中展示的四个函数是纯虚函数,等待子类的实现,其构造函数是protected属性的。
ConcreteBuilder类则是一个具体的子类,在BuilderPartA-BuilderPartC三个函数中是可以传入参数的,以便根据过程的不同最终创造出不同的复杂对象Product,
客户端并不是直接使用ConcreteBuilder类来进行复杂对象的创建,而是再次走一个弯路,就是通过Director的构造函数将Builder指针传递给Director类对象,然后又Director类
对象的成员函数Construct函数进行创建。这样,就实现整个流程。
1、当创建复杂对象的算法,应该独立于该对象的组成部分以及他们的装配方式
2、当构造过程必须允许的对象有不同的表示时
可以使用Builder模式
参与者:
Builder: 为创建一个Product对象的各个部件指定抽象的接口
ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件
Director : 构建一个使用Builder接口的对象
Product: 表示被构造的复杂的对象
也即这个,Builder模式,就是在需要进行对对象构造使用独立的算法进行对象创建过程使用builder模式!!