架构培训 -02 学习总结 架构师实现自己架构的主要手段

用户头像
刘敏
关注
发布于: 2020 年 06 月 17 日

编程的目的都是为了解决现实世界的问题。随着时间的推移,编程语言也在逐步的发展。当前最流行的编程语言就是面向对象高级编程语言,如: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指出应该如何设计一个接口。--从客户端的需要出发,强调不要让客户看到他们不需要的方法。



用户头像

刘敏

关注

还未添加个人签名 2018.04.25 加入

还未添加个人简介

评论

发布
暂无评论
架构培训 -02 学习总结 架构师实现自己架构的主要手段