软件系统架构的六大原则

在软件架构设计过程中,提前设计好一个好的架构设计,可以在后期减少很多的运维成本,下面是一些架构师多年以来总结的系统架构的六大原则

1.单一职责原则

对于一个类而言,应该只有一个引起他变化的原因,说白了就是不同的类有不同的责任,各施其责,就像一个团队一样,分工合作每个人负责每个人的事情

在我们做系统设计的时候,如果发现一个类有两种职责,那就问自己,可以分成两个类吗,如果可以,那就分吧,不要嫌麻烦,如果以前项目大了,两个责任互相影响,就会更加的难以维护

2.开放封闭原则

说白了就是对扩展开放,对修改关闭

当有需求改变的时候,就尽量的不去修改原来的代码而去在原来的代码上进行继承扩展,而不是直接的去修改这个类的代码,当然如果对整体系统的架构不影响的情况下,那修改就去修改吧

在你的系统进行升级和更新的时候,你如果改了原来的代码的前提下,有人还在用你以前的项目,而没有去更新,那你改动之后,别的用户就会出问题,

3.里氏替换原则

在你继承一个类的时候,务必重写父类的所有方法

4.最少知识原则

只与你最直接的朋友交流

尽量的减少对象之间的交互,从而减少类的耦合度,就是:高内聚,低耦合的意思

简单点说就是不要让一个类依赖于过多的类,尽量减少类之间的关系,否则你死都不知道怎么死的

5.接口隔离原则

不要对外暴露没有实际意义的接口。也就是说接口是给别人用的,不要去为难别人,尽量保证接口的实用性,对谁都好

就是你对外暴露接口的时候,想一想这个接口有没有必要对外暴露,如果是没有用的接口,那就删了吧,一旦提供了,就意味着你以后还要多做一件事,何必没事找事呢

6.依赖倒置原则

应该是面向接口编程,而不是面向类编程,想当于就事论事,那是正向依赖(正常人思维);

面向接口编程,相当于通过事物的表象来看本质,那是反向依赖,即依赖倒置(程序员思维)

补充设计原则

1.组合/聚合复用原则

当要扩展类的功能时,优先考虑使用组合,而不是继承。这条原则在 23 种经典设计模式中频繁使用,如:代理模式、装饰模式、适配器模式等。可见江湖地位非常之高

2.无环依赖原则

当 A 模块依赖于 B 模块,B 模块依赖于 C 模块,C 依赖于 A 模块,此时将出现循环依赖。在设计中应该避免这个问题,可通过引入“中介者模式”解决该问题

3.共同封装原则

应该将易变的类放在同一个包里,将变化隔离出来。该原则是“开放-封闭原则”的延生。

4.共同重用原则

如果重用了包中的一个类,那么也就相当于重用了包中的所有类,我们要尽可能减小包的大小。

5.好莱坞原则

好莱坞明星的经纪人一般都很忙,他们不想被打扰,往往会说:Don't call me, I'll call you. 翻译为:不要联系我,我会联系你。对应于软件设计而言,最著名的就是“控制反转”(或称为“依赖注入”),我们不需要在代码中主动的创建对象,而是由容器帮我们来创建并管理这些对象

其他设计原则

1.不要重复你自己的代码

不要让重复的代码到处都是,要让它们足够的重用,所以要尽可能地封装。

2.保持他的简单于傻瓜

不要让系统变得复杂,界面简洁,功能实用,操作方便,要让它足够的简单,足够的傻瓜。

3.高内聚低耦合

模块内部需要做到内聚度高,模块之间需要做到耦合度低。

4.惯例优于配置

尽量让惯例来减少配置,这样才能提高开发效率,尽量做到“零配置”。很多开发框架都是这样做的。

5.命令查询分离

在定义接口时,要做到哪些是命令,哪些是查询,要将它们分离,而不要揉到一起。

6.关注点分离

将一个复杂的问题分离为多个简单的问题,然后逐个解决这些简单的问题,那么这个复杂的问题就解决了。难就难在如何进行分离。

7.契约式设计

模块或系统之间的交互,都是基于契约(接口或抽象)的,而不要依赖于具体实现。该原则建议我们要面向契约编程

8.你不需要他

不要一开始就把系统设计得非常复杂,不要陷入“过度设计”的深渊。应该让系统足够的简单,而却又不失扩展性,这是其中的难点。

发布了6 篇原创文章 · 获赞 3 · 访问量 4961

猜你喜欢

转载自blog.csdn.net/qq_42087460/article/details/89960607