架构培训 -02 学习总结 架构师实现自己架构的主要手段
编程的目的都是为了解决现实世界的问题。随着时间的推移,编程语言也在逐步的发展。当前最流行的编程语言就是面向对象高级编程语言,如:java,C++等
1.面相对象编程
1.1面相对象编程三要素
封装
作用:隐藏实现细节
继承
作用:实现代码复用
多态
作用:可以提高代码的扩展性和复用性,是很多设计模式、设计原则、编程技巧的代码实现基础,也是今天主题实现自己架构的主要手段。
在JAVA的时候面相对象有四大特性:封装、抽象、继承和多态,封装和抽象可以合并为封装?
1.2面相对象设计的目的和原则
目的:设计出实现高内聚、低耦合的系统,使其具有:
易扩展-易于增加新功能
可移植-能够在多样的环境下运行
更强壮-不容易被粗心的程序员破坏
更简单-容易理解、容易维护
原则:五大基本原则 solid(s:单一职责 o:开闭原则 l:里斯替换原则 i:接口隔离原则 d:依赖倒置原则)
依赖倒置 控制反转 依赖注入 三者有啥区别?
1.3框架VS工具
框架调用应用程序代码
应用程序代码调用工具
架构师用框架保证架构的落地
架构师用工具提高开发效率
这短短的四句话,让很好的体会到了框架是什么,框架对于一个架构师的重要作用。
2.面相对象设计的基本原则
2.1OOD原则一:开/闭原则(OCP)
对于扩展开放
对于修改关闭
简言之:不需要修改软件实体(类、模块、函数等),就应该能实现功能的扩展。
传统扩展模块的方式就是修改模块的源代码。那如何通过不修改而实现扩展呢?--关键是抽象
2.2OOD原则一:依赖倒置(DIP)
高层模块不能依赖于低层模块,而是大家都依赖于抽象
抽象不依赖实现,而是实现依赖于抽象
DIP倒置了什么
模块或包的依赖关系
开发顺序和职责
软件的层次化
高层决定低层
高层被重用
平时写controller,service+impl,dao,都是在service层定义好了接口然后自己实现,再让controller层进行调用。这样写是不符合依赖倒置原则的,因为service层(低层)决定了controller层(高层)如何调用,传什么参数。按照依赖倒置原则,应该让controller层(高层)来决定service层(低层),所以正确的做法是在controller层(高层)定义好接口,让controller来依赖这个接口,让service层(低层)来实现这个接口。如下图:
好莱坞规则
Don't call me,I'll call you.
这个规则是框架设计的核心原则。
2.3OOD原则一:里式替换原则(LSP)
一个正确的继承要符合什么要求?
答:里式替换原则。 要求:子类型必须能够替换掉他们的基类。
墨子曾曰:《墨子 小取》 “娣,美人也,爱娣,非爱美人也” 娣:妹妹的意思
2.4OOD原则一:单一职责原则(SRP)
一个方法、类、模块只承担一个职责功能(一个职责要分场景进行讨论)。
如何判断是单一职责:只有一个引起他变化的原因。
2.5OOD原则一:接口隔离原则(ISP)
不应该强迫客户程序依赖他们不需要的方法。
ISP和SRP关系
ISP和SRP是相关的,都和“内聚性”有关。
SRP指出应该如何设计一个类。---只能有一种原因才能促使类发生改变。
ISP指出应该如何设计一个接口。--从客户端的需要出发,强调不要让客户看到他们不需要的方法。
评论