GoF23种设计模式中创建型模式有5种,分别是:Singleton单件模式、Abstract Factory抽象工厂模式、Builder生成器模式、Factory Method工厂方法模式、Prototype原形模式。下面分别总结这几种设计模式。
在学习的过程中,觉得从功能上看Abstract Factory模式和Builder模式容易混淆,Factory Method模式和Prototype模式不好区分。Singleton模式没什么太大的困难。下面就来分析一下前四种模式。 一、Abstract Factory模式和Builder模式: Abstract Factory是应对一系列对象的创建的问题,正如前面文章中举的例子,对于创建一个汽车对象来说,Abstract Factory模式更关注一系列的对象的创建,或者说是汽车类型中的各个部分,如:Wheel、Engine、Body等等类型的创建。换句话说关注点在这一系列对象上。 Builder是应对一个复杂对象创建的问题,或者说是针对这个复杂对象中的子对象的创建的问题。以汽车的例子来说,我觉得比起Abstract Factory模式,Builder模式相对注重汽车类型(上面所说的“复杂对象”)本身以及其各个部分(Wheel、Engine、Body等等)类型的创建。Builder模式要求这个复杂的类型(汽车)中的各个子类型的结合部分相对稳定,用例子说明就是对于汽车来说,无论用什么配件组装,个个配件的组装方式都一样,有相对稳定的接口。对于这辆车你用什么牌子的Wheel、什么牌子的Engine可能变化会很大很频繁。 二、Factory Method模式和Prototype模式: 开始我觉得这两种模式从功能上讲是一样的(个人观点),都是封装了对对象的创建,只不过Prototype模式是用原型克隆进行拷贝来完成对象的创建,在这之中还应注意浅拷贝和深拷贝的区别。在向同事请教后有点明白。这两种模式在应用场景上还是一定的区别的。 Factory Method模式是重新创建一个对象 Prototype模式是利用现有的对象进行克隆,当两个对象或多个对象雷同的时候,可以考虑用一个已创建的对象去克隆出其余的对象。 |
|