设计模式学习前序

         先说下题外话,LZ为什么突然想着学习,因为这次疫情的影响,在家呆了将近一个月。一开始的边享受假期边担心疫情(此处心疼咱可爱的国家与一线作战的勇士们,希望疫情尽快过去),到后面逐渐出现焦虑。为啥会出现焦虑,一方面可能是在家闷太久了,另一方面是偶然间看了些文章,里面提到的一些关于30岁之后的一些问题或者现象。然后结合了一下自身情况,发现自己如今的状态/生活方式一直这样子下去(缺少学习 PS:LZ现在是个搬了2年砖的码农,现在代码会写,框架也可以搭,但是涉及原理性的东西就哑火,问啥啥不行,吃饭第一名),再过几年也会是这样子。所以为了改变自己,决定开始学习。偶然间在博客园发现一位博主的文章写得很好,设计模式也是参考他的来学习。在这里很感谢这位博主(传送门https://www.cnblogs.com/zuoxiaolong/p/pattern1.html) 。因为这是个人的学习笔记,很多东西都是kiang来的。个人觉得,能达到自己理解的目的就好了。
         其实这篇文章我是做完了GOF的23种设计模式的笔记后才回头补的,说实话,从上个星期到现在,虽然这些模式都学完了,但是有种囫囵吞枣的感觉。现在学了,等会又忘了,连最基本的定义都说得不清不楚,所以LZ会重新回头去理解。建议大家在学习的时候,可以从  一个模式的定义,UML图,到适用场景,到简单的例子,优缺点等这样子去学。最重要的是理解,理解这种设计模式的点在哪里,设计毕竟包含着思想在里面,所以这东西急不来,学习需要的是持之以恒。路漫漫其修远兮,吾将上下而求索。一起共勉吧。如果有错误或者不当的地方,还望指出,谢谢。好了,啰里啰嗦了这么久。下面开始正题吧。

何为设计模式?
     是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。

     ps:分类是指 创建型模式,结构型模式,行为型模式。

     有种说法很贴切:设计模式就是为了解决特地场景出现的问题的一系列方法。
为什么使用设计模式?
    是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。 


模式的六大原则:
1、开闭原则(Open Close Principle)

开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。

2、里氏代换原则(Liskov Substitution Principle)

里氏代换原则是面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP 是继承复用的基石,只有当派生类可以替换掉基类,且软件单位的功能不受到影响时,基类才能真正被复用,而派生类也能够在基类的基础上增加新的行为。里氏代换原则是对开闭原则的补充。实现开闭原则的关键步骤就是抽象化,而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。

3、依赖倒转原则(Dependence Inversion Principle)

这个原则是开闭原则的基础,具体内容:针对接口编程,依赖于抽象而不依赖于具体

4、接口隔离原则(Interface Segregation Principle)

这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。它还有另外一个意思是:降低类之间的耦合度。由此可见,其实设计模式就是从大型软件架构出发、便于升级和维护的软件设计思想,它强调降低依赖,降低耦合。

5、迪米特法则,又称最少知道原则(Demeter Principle)

最少知道原则是指:一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。

6、单一职责原则(Single responsibility principle)

单一职责原则:每个类都只负责单一的功能,切不可太多,并且一个类应当尽量的把一个功能做到极致

posted @ 2020-03-05 15:28  小羊小恩  阅读(145)  评论(0编辑  收藏  举报