系列文章目录
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
关于UML的学习,越到后面就越抽象,就好像直接说建设美丽中国一样抽象,非常难受。
一、设计模式的简单理解或者说介绍
模式就是应对一种问题的时候,专家总结出来的一些方法或者结论。举个例子,比如汽车的轮胎,为什么用圆的而不用方的,因为经过大佬们的一些想法总结出来这种东西,这种模式,轮子圆的和其他的形状都要好,轮胎用这种材料比其他的都要好一点点。我们不但可以用这种方法来解决一些常见的问题,也可以通过一种被广泛大众接受的模式进行交流。就像我们之间说,轮子你很容易就知道是圆形,那么我就不需要再过多描述就能达到想法比较高度的一致
总到来说,模式有两种好处,第一种就是可以被用来解决比较大众的问题,第二种就是可以更好的和别人进行交流
二、六种模式的介绍
1.单实例模式
定义:一个类只有一个实例,且该类能自行创建这个实例。
实现方式:私有化构造函数,私有化成员,对外开放一个接口。
意义:节约内存,保证数据内容的一致性。
一开始我最不明白的就是这个模式。我很疑惑,这在干嘛。回过头来看才明白,大概四人帮也就是(gong of four)他们想说这么一件事情,就是一般创造一个类,并且这个类可能很少人用或者说这类只用一个对象的时候,再或者你不知道怎么规定公有或者私有的成员(不管是成员对象还是成员函数)的时候,你就这么干吧,让结构函数私有,成员私有,对外开放一个接口就好。
2.适配器
定义:转接器。在相互接口不兼容,再具体一点就是说带多态的时候如果不兼容,那么就用一个虚拟类来让他们兼容。
实现方式:额外设计一个虚拟类来使功能对接。
意义:使原本不能够一起工作的东西一起工作
很好理解,但是我认为这个东西还是比较难做到,对于我们这些喜欢抄别人代码的人最了解这个事情了。有时候你想用别人的东西,你起码得了解一些,什么得懂基本原理才可以让两个难以一起工作的人工作。就像翻译器一样,如果翻译器不懂两边的语言,你啥也做不了。
3.外观模式
定义:为自己的程序能够实现的功能对用户提供一个接口。
实现方式:在UI层建设一个虚拟类
意义:降低系统之间的耦合性或者说对外提供一个一致的接口。
这个和控制器的里面很像,和适配器的做法很像,和隔离变化的想法也很接近。
4.观察者模式
定义:如果一种类是一对多的依赖关系,让多个类倾听一个类的变化信息。我们那个单独的类在变化的时候,对通知所有的依赖类,让他们自己更新自己。
实现方式:在被观察者里面有一些用户的列表,发送就好了。
意义:主要就是虚拟类,让两边都依赖于抽象的好处。
给出这种方案罢了。也侧面提倡具体类先依赖抽象类。
5.策略模式
定义:行为和算法分离,选择实现
实现方式:让算法实现一个接口
意义:避免使用难以维护的多种条件选择语句
让算法和业务独立出来,让各种单独算法也独立。(关于多种条件判断语句坏处的理解)
6.工厂模式
定义:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。
实现方法:用户对工厂进行描述,工厂制作产品给客户。
意义:用户只需要知道相关的品牌产品告诉工厂,工厂就可以实现产品的生产,并且因为是抽象类产品可以随便添加。
产品有两个标识吧,一个是厂家,一个是产品类型,比如华为是厂家,手机是产品类型,客户定义了厂家和产品类型,工厂就产生产品。(再多理解理解)
总结
模式的提出,首先要说出一个名字,再次就是描述模式的解决的一个问题,然后就是模式提出一个解决方案,最后还要给出这个模式的一些缺点和应用后果,就像企业方案书一样。