建造者模式
建造者模式是创建复杂对象才使用的设计模式。
适用场景:在你的设计当中,有一个特别复杂的类,这个类是由多个对象组合而成,创建自然也比较复杂。而它的创建方式也有很多种(由不同的对象组合而成),这时,我们希望把这个类的构建与其表示分离开来,这样既方便构建,还可以代码复用。
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。
uml图:
解释:
Builder(抽象建造者):它定义了建造一系列类所有相同必要的步骤方法(builderPartX),它可以是抽象类或接口。当然,它还必须有一个用于返回创建完成的对象的方法(getResult)。
●ConcreteBuilder(具体建造者):实现Builder接口(或继承于Builder抽象类),用于创建你所需要的产品。当想扩展另一种这个产品的创建方式时,新定义一个具体的builder就可以了(可见其方便扩展)。
●Product(产品角色):复杂的类,由多个对象组合而成。
● Director(指挥者):用于定义复杂对象创建过程,也就是指定builder的创建流程。客户端一般只需要与指挥者进行交互,在客户端确定具体建造者的类型,并实例化具体建造者对象(也可以通过配置文件和反射机制),然后通过指挥者类的构造函数或者Setter方法将该对象传入指挥者类中。个人认为,这个”指挥者也可以有多种。”