在Gof的23种设计模式中对Builder Pattern的定义是:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
从程序角度来说,就是在基类定义某种事物创建的过程或业务流程,在子类进行重写或是使用基类方法。这样创建出来的实例不会因为过程或流程的丢失而使业务失败。举例来说,我们要建一辆汽车,汽车需要车轮、方向盘、发动机、油门、刹车等上百个设计功能和流程。现在我需要自己建一辆汽车,那么汽车需要的这上百个流程我都要自己完成,很可能由于其中某个流程忘做或是流程错误,使整车无法使用。这个时候,就需要使用建造者模式来解决这个问题了。
首先我们需要定义一个建造汽车的基类,里面的CreateCarInstance()方法定义了建造一辆汽车所需要的所有流程。
然后我们自己定义一个汽车类,继承汽车的基类,并且重写基类里面的CreateSteering()和CreateEngine()方法。
调用代码为:
执行结果为:
在MyCar类里面,我们重写了CreateEngine()方法,使自己汽车的发动机变成了本田Honda的。车轮对于汽车是必须的,但是我们在MyCar里面由于疏忽,并没有写CreateWheel()方法,但是没有关系,因为基类中已经有CreateWheel()方法了。所以对于CreateCarInstance()来说,建一辆是稳定的。
如需转载,请注明本文原创自CSDN TJVictor专栏:http://blog.csdn.net/tjvictor