架构 0 期 week2 学习总结
不知不觉架构师训练营已经开始了两周了,而我作为一个架构小白,经历了这两周的训练之后,明显动手能力和思维能力都得到了极大的提升。那么现在让我来总结一下这周的重点吧(我认为的)。
编程语言的实质:用计算机来解决现实中的问题,将现实中的问题转化为计算机能处理的模型。编程语言的本质就是对这一模型的抽象(机器代码和汇编语言、非结构化的编程语言、结构化的程序设计语言、面向对象的程序设计)。模型的变化代表着编程语言的演变。编程的核心要素是人、客观业务领域、计算机。
什么是对象?对象具有三大特征:
状态:表明每个对象都有自己的数据
行为:表明每个对象都可以产生行为
标识:表明每个对象都区别于其它的对象(唯一的地址)。
面向对象的三要素:
封装性:隐藏实现细节,定义接口
继承性:IS-A关系、HAS-A关系(组合)
多态性:后期绑定、向上转形。
值得注意的是,上述三要素并不是面向对象编程语言才能实现,实际上,传统的面过过程语言也可以实现上述三要素,只是实现起来比较复杂而已。例如C语言。
面向对象编程更多的是利用其多态特性进行编程,面向对象分析就是将编程的业务领域进行对象分析并建模。
为什么有面向对象设计?
为了使系统强内聚、低耦合,从而实现:易扩展、更强壮、可移植、更简单。设计原则,23中设计模式和6大原则。
面向对象六大原则:
开闭原则(OCP):对于扩展是开放的,对于更改是封闭的。如何实现不修改而扩展呢?答案是抽象。
依赖倒置原则(DIP):高层模块不能依赖底层模块,而是依赖于抽象,抽象不能依赖于实现,而是实现依赖抽象。也叫好莱坞原则。
里氏替换原则(LSP):一个正确的继承要符合里氏替换原则,简言之,子类必须能够替换掉它们的父类而不影响正常的功能。
单一职责原则(SRP):一个类,只能有一个引起它变化的原因。一个职责就是一个变化的原因。
课后案例:反应式编程框架Flower(消息驱动的反应式编程框架)的设计
1、程序运行步骤:
并发用户请求-->服务器(web端口-->web容器(为每个线程创建一个线程,县城内完成全部操作,返回响应)-->数据库连接池-->数据库连接-->数据库
2、Flower实现性能提升的基础是实现了异步,而其基础是Akka的Actor。
2020.6.17
评论