设计模式总结(二)

【前言】

  距离上次总结博客也有一段时间了,上次总结的是设计模式的大概分类以及一些涉及到的原则,那么今天就来具体的说一说创建型模式。

【主要内容】

  在上篇博客中有提到创建型模式中包括的几种类型模式,那么小编就来分类说一说这些模式。

【抽象工厂模式】

  定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。
  举例:生产一台PC机,使用抽象工厂模式的话,只有一个工厂就是PC工厂,但是一个PC工厂涵盖了cpu工厂,内存工厂,显卡工厂等要做的所有事。
  UML图:
这里写图片描述
  优点:抽象工厂模式将具体产品的创建延迟到具体工厂的子类中,这样将对象的创建封装起来,可以减少客户端与具体产品类之间的依赖,从而使系统耦合度低,这样更有利于后期的维护和扩展。
  缺点:抽象工厂模式很难支持新种类产品的变化。这是因为抽象工厂接口中已经确定了可以被创建的产品集合,如果需要添加新产品,此时就必须去修改抽象工厂的接口,这样就涉及到抽象工厂类的以及所有子类的改变,这样也就违背了“开发——封闭”原则。

【工厂方法模式】

  定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
  举例:还举上边那个PC机的例子,上边抽象工厂模式只需要抽象出来一个工厂,那么使用工厂方法模式生产一台PC机,,一般会有cpu工厂,内存工厂,显卡工厂…
  UML图:
这里写图片描述
  优点:可以利用多态性来完成系统的扩展,对于抽象工厂类和具体工厂中的代码都不需要做任何改动。

【建造者模式】

  定义:将一个复杂对象的构建与它的表示分离,使得同样的构件过程可以创建不同的表示。
  举例:还举上边那个PC机制作的过程来解释,按照之前的UML我们可以看出具体的产品(cpu、内存、显卡)都在PC机类中,也就是说PC机这个复杂对象的创建与他的具体的表示没有分离开,所以我们要在这两者之间创建一个新的对象(制造厂商)来将这两者分开,同时还需要一个指挥者进行控制。
  UML图:
这里写图片描述

【原型模式】

  定义:用原型实例定义指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
  举例:比如我们去生产pc机,pc机包括cpu、内存、显卡等等,如果大批量生产pc机的话那么就需要我们去一次一次地去生产cpu、内存、显卡,这样就太过麻烦。如果使用原型模式就是将生产cpu、内存、显卡等等的这些过程定义成一个具体原型类(模板)、pc机就是原型克隆自身最终生成的对象。重复去拷贝原型类就重复去生产pc机,省去了大量的过程。
  UML图:
这里写图片描述
  优点:
  1)原型模式向客户隐藏了创建新实例的复制性
  2)允许动态增加或者减少产品类。
  缺点:
  1)每个类必须配备一个克隆方法
  2)对于新建的类使用拷贝很容易,对于已有的类进行拷贝时,特别当一个类引用不支持串行化的间接对象或引用含有循环结构的时候。

【单例模式】

  定义:单例模式就是保证一个类有且仅有一个实例,并且提供一个访问它的全局访问点。
  举例:就比如人的身份证号码一样,是唯一的。
  UML图:
这里写图片描述

【总结】

  现在了解的还是比较浅,等了解深了再去多做补充,如果不准确的地方还请大家指出。3ks_

猜你喜欢

转载自blog.csdn.net/mabanana/article/details/79827858