您的位置:首页 > 运维架构 > 网站架构

架构收藏必备:架构设计的六大原则

2020-05-10 04:12 781 查看

 

目录

单一职责原则

开放封闭原则

里氏替换原则

最少知识原则

接口隔离原则

依赖倒置原则

单一职责原则

There should never be more than one reason for a class to change.

译文:永远不应该有多于一个原因来改变某个类。

理解:对于一个类而言,它所对外的作用域,应该是清晰明了,并且在限定范围内。简单来说,每一个类,都有自己的责任范围,该做什么不该做什么,这个类应该是界限清晰的。像现在的一个团队里面,各司其责,互相关联但是又职责明确。这样子的设计,有点类似于领域驱动设计。

设计:现在很多都是三层架构,基本上已经固定要做什么,但是同时也是需要我们自己设计一些类,这时候我们在进行设计的时候有个界限原则,就是这个类里面的方法,是否都在这个类的管辖范围内,如果不是,就要考虑分成两个或者三个,例如我们新建一个类DateUtils,专门用来处理时间,那里面写入了处理Http的方法,此时就要考虑职责,用句俗话来说就是:专业的人做专业的事。

开放封闭原则

Software entities like classes, modules and functions should be open for extension but closed for modifications.

译文:软件实体,如:类、模块与函数,对于扩展应该是开放的,但对于修改应该是封闭的。

理解:每一个类,都是一个固有的个体,里面集成了各类数据及操作方法,对外可以进行拓展或者组合,但是尽可能不要去修改。

设计:这个设计是非常好,但是又有弊端。

优点:我们所做的系统,是不断根据需求来的,一代又一代的开发者不断对系统进行修改,最大的问题就是不敢动原先的代码,此时我们需要做的是采用继承或者组合的方式来形成新的需求功能。

缺点:但是如果这样子,有一个很重要的问题,就是代码会越来越臃肿,最终每个人都看不懂。

我想,重构很多时候就是用来解决这种问题,从需求重新开始梳理开始对业务进行重构。

 

里氏替换原则

Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it.

译文:使用基类的指针或引用的函数,必须是在不知情的情况下,能够使用派生类的对象。

理解:权责问题,子类可以扩展父类的功能,但不能改变父类原有的功能。

设计:有三点

1、子类可以实现父类的抽象方法,但是不能覆盖父类的非抽象方法

2、子类中可以增加自己特有的方法,当功能扩展时,子类尽量不要重写父类的方法,而是另写一个方法

3、当子类覆盖或实现父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松

最少知识原则

Only talk to you immediate friends.

译文:只与你最直接的朋友交流。

理解:一句话高内聚,低耦合,这是我们一直追求但是追求不到的东西,天道一样一样的。

应用:在做系统设计中,如果两个类或者对象之间不必彼此直接通信,那就不要联系了,老死不相往来最好。如果要联系,一般做法是引入一个中间介质或者第三方对象,来承担这些联系,像我们的service层。

 

接口隔离原则

The dependency of one class to another one should depend on the smallest possible interface.

译文:一个类与另一个类之间的依赖性,应该依赖于尽可能小的接口。

理解:保证接口的职责,尽可能不要引入无用的方法,让使用者明确接口作用。

应用:做接口设计的时候,接口极可能的进行细化,最好是一个接口对应一个功能模块,同时接口里面的方法应该尽可能的少,使接口更加轻便灵活,有点类似与service层的接口设计。

 

依赖倒置原则

High level modules should not depends upon low level modules. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions.

译文:高层模块不应该依赖于低层模块,它们应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。

理解:其实这个说起来抽象,但是简单来理解的话就是要做接口编程,不要依赖具体实现。

设计:在做设计中,尽可能设计接口吧,用接口去对外进行数据沟通,spring的本质就是告诉我们,要这样子做。

 

将以上六大原则的英文首字母拼在一起就是 SOLID(稳定的),所以也称之为 SOLID 原则。

这个原则是给我们参考的,在做设计的时候,一定要因地制宜,千万不要生搬硬套,一定要变通,过度设计是非常可怕的存在,切记切记。

架构师修炼之路 原创文章 7获赞 24访问量 7559 关注 私信
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: