工作四年有余,编写的代码都是业务代码。不涉及低层。
目前离职在家,过年完了,准备找工作了。
决定温故而知新,复习也是学习。
本着随遇而安的原则,随便从之前设计的众多条目中选择了一条开始复习。
设计模式
我本身并不是计算机科学系的专业,一焊电路板专业的,唯一与代码相关的是在大学学过公共的C语言基础。
复习就不多BB以前的东西了。
总结过往:
工作中使用到设计模式的地方还是有不少的,只不过疏于归纳与统计。
同时也是由于工作中需要满足的情况往往比较复杂与实际,所以多使用的混合多种模式的设计模式。
我这里想特别的说一下自己看法:
所谓的设计模式,其实更多是前人多各种编程集成方案的归纳和总结,冠以形象的名称方便后人套用。
但归根结底,无非是由语言特性的支持,加上面向对象、面向函数、面向接口的思想,组合而成的连招。
过于拘泥于招式本身,就脱离了设计模式的初衷了。
封装,接口的实现,反射,有这些东西,无所谓设计模式。
一样能达到低耦合,高复用,易扩展易维护的目的。而设计模式不也是这个目的么。
学习总结:
我这里不细讲设计模式的具体内容,(我自己看的这本书《大话设计模式》)
只总结设计模式的核心依赖技术,与实现需求的大原则。
所谓核心:
抽象,封装,继承,多态,反射
所谓原则:
1、开放封闭原则(OCP,Open Closed Principle)是所有面向对象原则的核心。(对抽象编程,不对具体编程。已达到易扩展易为维护的目的)
2、单一职责原则(SRP:Single responsibility principle)又称单一功能原则,面向对象五个基本原则(SOLID)之一。(功能原子化,最小粒度化。讲单一的功能封装到类或模块中,提供接口给外部调用)
3、依赖倒置原则(Dependence Inversion Principle)是程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。
4、里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。(后面复制的百度,我这里总结一句话,想想Spring属性注入,为什么在被注入的类中,声明属性的时候总是并且一定是以接口声明) 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。
5、合成/聚合复用原则(CARP),说简单点,继承复用少用,因为破坏了父类的封装。多用接口的实现。
6、迪米特法则(Law of Demeter)又叫作最少知道原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。(说白了,另一种减少耦合的思想)
以上的原则,可以自己去百度。我一句话总结下:
1、少用继承多用实现(这样才能灵活)
2、功能最小粒度化,实现原子封装(这样才好复用好扩展)
3、面向协议开发,面向接口开发,抓住头尾即可(入参出参或者请求回调都是如此)