软件架构设计的七大原则

一. 开闭原则(Open-Closed Principle, OCP)

定义: 指一个软件实体如类、模块和函数应该对扩展开放对修改关闭。所谓的开闭,也正是对扩展和修改两个行为的一个原则。强调的是用抽象构建框架,用实现扩展细节

作用: 提高软件系统的可复用性及可维护性,开闭原则,是面向对象设计中最基础的设计原则。它指导我们如何建立稳定灵活的系统,例如:我们版本更新,我尽可能不修改源代码,但是可以增加新功能。

案例:很多互联网公司都实行弹性制作息时间,规定每天工作 8 小时。意思就是说,对于每天工作 8 小时这个规定是关闭的,但是你什么时候来,什么时候走是开放的。早来早走,晚来晚走。

1. 首先创建一个课程接口ICourse

2. 整个课程生态有Java 架构、大数据、人工智能、前端、软件测试等,我们来创建一个 Java 架构课程的类JavaCourse

优惠:

Java 架构课程做活动,价格优惠。如果修改 JavaCourse 中的 getPrice() 方法,则会存在一定的风险,可能影响其他地方的调用结果。我们如何在不修改原有代码前提前下,实现价格优惠这个功能呢?现在,我们再写一个处理优惠逻辑的类, JavaDiscountCourse 类继承JavaCourse

类结构图:

软件架构设计的七大原则_第1张图片

二, 依赖倒置原则(Dependence Inversion Principle,DIP)

定义:指设计代码结构时,高层模块不应该依赖底层模块,二者都应该依赖其抽象。抽象不应该依赖细节;细节应该依赖抽象

作用: 通过依赖倒置,可以减少类与类之间的耦合性,提高系统的稳定性,提高代码的可读性和可维护性,并能够降低修改程序所造成的风险

我们再看看两种注入:构造注入和依赖注入

软件架构设计的七大原则_第2张图片

软件架构设计的七大原则_第3张图片

案例:

软件架构设计的七大原则_第4张图片

三,单一职责原则

定义: 指不要存在多于一个导致类变更的原因。假设我们有一个 Class 负责两个职责,一旦发生需求变更,修改其中一个职责的逻辑代码,有可能会导致另一个职责的功能发生故障。这样一来,这个 Class 存在两个导致类变更的原因。如何解决这个问题呢?我们就要给两个职责分别用两个 Class 来实现,进行解耦。后期需求变更维护互不影响。

作用:可以降低类的复杂度,提高类的可读性, 提高系统的可维护性, 降低变更引起的风 险 。 总体来说就是一个             Class/Interface/Method 只负责一项职责

 

 

 

你可能感兴趣的:(Java相关)