离职了,在家温故而知新----1 设计模式 & 开头

时间:2023-03-09 18:07:11
离职了,在家温故而知新----1 设计模式 & 开头

工作四年有余,编写的代码都是业务代码。不涉及低层。

目前离职在家,过年完了,准备找工作了。

决定温故而知新,复习也是学习。

本着随遇而安的原则,随便从之前设计的众多条目中选择了一条开始复习。

设计模式

我本身并不是计算机科学系的专业,一焊电路板专业的,唯一与代码相关的是在大学学过公共的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、面向协议开发,面向接口开发,抓住头尾即可(入参出参或者请求回调都是如此)

离职了,在家温故而知新----1 设计模式 & 开头