week2- 作业二,学习总结 - 框架设计
一、设计臭味
1、僵化性:很难对系统进行改动,因为每个改动都会迫使许多对系统其他部分的改动;
2、脆弱性:对系统的改动会导致系统中和改动的地方无关的许多地方出现问题;
3、牢固性:很难解开系统的纠结,使之成为一些可在其他系统中重用的组件;
4、粘滞性:做正确的事情比做错误的事情要困难;
5、不必要的复杂性:设计中包含有不具任何直接好处的基础结构;
6、不必要的重复:设计中包含有重复的结构,而该重复的结构本可以使用单一的抽象进行统一;
7、晦涩性:很难阅读、理解。没有很好的表现出意图;
二、面向对象编程
1、什么是计算机,什么是程序?
2、编程语言的实质:编程语言是一种"抽象"的机制,问题是对"谁"来抽象
领域问题---->模型<----->软件系统
3、编程方法的演进:汇编语言--->高级语言--->结构化程序---->OOP
4、OOP三要素:封装性、继承性、多态性
5、面向对象编程不是使用面向对象的程序语言进行编程,而是利用多态性进行编程;面向对象分析师将客观世界,即编程的业务领域进行对象分析
三、面向对象设计OOD五项基本原则
1、单一职责原则:一个类,只能有一个引用它的变化的原因;
2、开闭原则:对扩展开放,对修改封闭;
3、里氏替换原则:子类型必须能够替换它们的基类型;
4、接口隔离原则:不应该强迫客户程序依赖它们不需要的方法;
5、依赖倒置原则:高层模块不能依赖于底层模块,而是大家都依赖于抽象;抽象不能依赖于实现,而是实现依赖于抽象;
四、案例:反应式编程框架Flower的设计
1、反应式编程
1.1、反应式编程师一种编程思想、编程范式,是为了简化并发编程而实现的。和传统的处理方式相比,它能够基于数据流中的事件进行反应处理;
1.2、反应编程中,最基本的处理单元室事件流中的事件。流中的事件包括正常事件和异常事件;
2、Flower
2.1、项目地址: https://github.com/zhihuili/flower
2.2、Flower既是一个反应式编程架构,又是一个分布式微服务架构。Flowe框架使得开发者无需关注反应式编程细节,即可得到一个反应式系统;
2.3、即时响应,服务流程的调用者可以得到即时响应,无需扽等该整个Service流程执行完毕;Service之间无调用阻塞,即时响应。
2.4、回弹性,当service失效,服务器失效,系统能够进行自修复,依然保持响应,不会出现系统崩溃;
2.5、弹性,能够对调用负载压力做出响应,能够自动进行资源伸缩适应负载压力,能够根据系统负载能力控制请求的进入速度。
2.6、消息驱动,Service之间通过消息驱动,完成服务流程,Service之间没有任何调用耦合,唯一的耦合就是消息,前一个Service的返回值,必须是后一个Service的输入参数,Flower框架负责将前一个Service的返回值封装成一个消息,发送给后一个Servie。
评论