我与大话设计模式之规则篇(一)

    看了设计模式的几个原则,通过故事的学习能更好的理解,类与类之间什么样的关系能使得功能更加的高效并且更好的维护。下面通过几个原则的对比,更好的学习一下。关于依赖倒转原则理解的还是是太好,学习好点再来补充。


单一职责原则(SRP)

定义:就一个类而言,应该仅有一个引起它变化的原因。


    一般看到定义我就直接晕了,还是通过例子来理解比较好。就大话设计模式书上的例子---拍摄来说,手机和数码相机都有摄像的功能,但是手机主要用来call someone phone,而摄像机主要用来take pictures,所以手机的像素不如数码相机的高,因此画面不如数码相机清楚这是很明显了。我理解的单一职责原则就是一个类就拥有一个功能就可以了,不要把类当锅使来乱炖。如果功能太多,功能和功能之间可能有影响,引发不可预测错误,并且本身特色展现不出来。


开放封闭原则

定义:是说软件实体(类,模块,函数等等)应该可以扩展,但是不可修改。


    比如大话设计模式书上的例子所说,在一个公司里规定早晨9点上班,但是有老员工总是迟到该怎么办?总不能把迟到的员工全部都按照规章制度迟到三次就炒鱿鱼吧。所以在某些事情上还得稍微扩展一下。。。要不公司倒闭了可咋办,别人岂不跟着一起遭殃。书上老师写到可以让迟到的人晚下班,只要保证了工作时间就ok,这就做到了时间表的扩展,但是公司的规定9点上班还是不变的。


    又比如win系统我们都知道win的版本有win xp,win7,win8,win8.1,一直到现在有了win10,我也尝试过了win10还是很好用的,有了win7的稳定,又具有win8的视觉感,用起来特别的方便,win系统的每一个版本的更新肯定都是在原有的功能至上扩展来的,win系统程序员不可能摒弃原来的好处从此新来过,也不能直接在原有代码上直接更改,因为直接修改可能会引来不必要的麻烦和问题的出现,导致系统崩溃可就不好了。这就是开放封闭性原则,即可以扩展功能,但是不能在原来的基础上直接修改。求职考研两不误的例子也是这个含义,我们要放眼未来。


依赖倒转原则

定义:1.高层模块不应该依赖低层模块,两个都应该依赖抽象。2.抽象不应该依赖细节,细节应该依赖抽象。


    对于这个原则我还是不太理解,对于抽象不应该依赖于细节和细节应该依赖于抽象让我想起来了书上的一个例子,说会飞的都是鸟类,但是鸟类的不一定都会飞,比如企鹅是鸟类,但是企鹅不会飞。这样想来,是不是可以理解成为企鹅的翅膀要依赖于鸟,但是鸟不能依赖于翅膀。又像动物这个类,说猫都是动物,但是动物不都是猫,因为动物有很多种,狗、鸡、鸭、、、、


    从字面看来依赖倒转,既然依赖倒转过来了是不是就需要我们反过来思考呢,记得看UML的时候画图鸟依赖翅膀会飞,但是这里倒转后就不能是鸟依赖翅膀了,而应该是翅膀依赖鸟了。好吧,不饶了,我自己都迷糊了,先到这里,有新的理解继续补充。


你可能感兴趣的:(【设计模式学习】)