写点什么

第二周总结

发布于: 2020 年 09 月 26 日

编程史

德国人莱布尼兹 ——> 法国人雅卡尔 & Ada ——> 图灵 & 冯诺依曼

机器码(二进制) ——> 汇编语言 ——> 面向过程语言(人类思维) ——> 面向对象语言(事物本质)

OOP

编程的过程:在计算机所能理解的”模型“(解空间)和现实现在(问题空间)之间,建立一种联系。

编程本质:人(劳动者)、计算机(劳动工具)、客观业务领域(劳动对象)

万物皆对象:封装性、继承性、多态性

面向对象编程不是使用面向对象的编程语言进行编程,而是利用多态特性进行编程。

面向对象分析是将客观世界,即编程的业务领域进行对象分析。

  • 充血模型 & 贫血模型

  • DDD 领域驱动设计

设计臭味

  • 高内聚、低耦合

  • 可读性、可维护性、可扩展性、可移植性

开闭原则

OCP:对扩展开放,对更改封闭;即不需要修改软件实体(类、模块、函数等),就可以实现功能的扩展。

实现方式:抽象,套路“接口 ——> 策略模式 ——> 适配器模型 ——> 观察者模式”

依赖倒置原则

DIP:高层模块不能依赖低层模块,而是大家都依赖于抽象;抽象不能依赖实现,而是实现依赖抽象。

注意:接口属于高层模块,DIP 指导开发过程中模块和包的依赖关系倒置以及开发顺序职责的倒置。

思想:高层决定低层;高层被重用。

引申:框架的设计原则,框架调用应用程序,但不依赖应用程序的代码。Don't call me, I'll call you!

案例:spring 的 annotation

里氏替换原则

LSP:子类型必须能够替换掉他们的基类型;即一个正确的继承符合的要求是 Liskov 替换原则。

不管白猫黑猫,抓到老鼠的就是好猫。

单一职责原则

SRP:即”内聚性原则“,一个模块的组成元素之间的功能相关性;一个类,只能有一个引起它的变化原因。即一个类的职责是单一且明确的,不能大而全(idea 一屏)

接口隔离原则

ISP:不应该强迫客户程序依赖它们不需要的方法。

ISP & SRP 关系:

  • ISP 和 SRP 是相关的,都和”内聚性“有关

  • SRP 指出应该如何设计一个类(只能有一种原因才能促使类发生改变)

  • ISP 指出应该如何设计一个接口(从客户的需求出发,强调不要让客户看到他们不需要的方法)

反应式编程

程序运行越来越慢:线程阻塞,阻塞导致了线程不能释放,阻塞导致资源被占用,最终系统资源被耗尽,程序崩溃。

其中 Web 容器解析 http 协议,为每个请求构造一个 request 请求对象以及 response 响应对象。如果有数据库操作,则需要拿数据库连接以及基于连接操作数据库;这其中会有大量的 IO 操作,也就是大量的 IO 阻塞。



Flower 框架:异步的基础是基于 Akka 的 Actor 实现,提升TPS、响应时间、吞吐量。核心点在网络 IO 编程(多路 IO 复用)





总结

框架就是制定一套规范,定义一组接口;由开发者、具体的应用程序去实现这套规范和接口。框架的设计基于依赖倒置原则即 DIP;好的框架必须是高内聚低耦合的,常用的设计原则如 OCP、DIP、LSP、SRP、ISP作为方法论。

发布于: 2020 年 09 月 26 日阅读数: 37
用户头像

人生就是一棵树 2018.08.11 加入

人生就是一棵树

评论

发布
暂无评论
第二周总结