一.前言
Java 七大设计原则是:
-
单一职责原则(Single Responsibility Principle,简称 SRP):一个类应该仅有一个引起它变化的原因。
-
开放封闭原则(Open-Closed Principle,简称 OCP):软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改。
-
里氏替换原则(Liskov Substitution Principle,简称 LSP):子类型必须能够替换它们的基类型。
-
接口隔离原则(Interface Segregation Principle,简称 ISP):客户端不应该依赖它不需要的接口。
-
依赖倒转原则(Dependence Inversion Principle,简称 DIP):高层模块不应该依赖于低层模块,两者都应该依赖于抽象。
-
合成复用原则(Composite Reuse Principle,简称 CRP)
-
迪维恩原则(Demeter Principle,也称为最少知识原则)
这七个原则可以帮助软件工程师更好地设计软件系统,使得系统更加稳定、可扩展。遵循这些原则可以帮助减少系统中的耦合度,使得系统更加易于维护和扩展。下面我将分别介绍这七大原则,让你的代码变得那么的高雅!
二.七大设计原则
2.1.单一职责原则(Single Responsibility Principle,简称 SRP)
单一职责原则(Single Responsibility Principle,简称 SRP)是指一个类只负责一项职责。这个职责可以是维护一个特定的数据,提供一组相关的操作,或者是封装一组相关的接口。
这个原则的核心思想是:类的职责应该尽量简单,一个类只应该负责一个单独的任务或功能。这样的类通常比较容易设计、维护和理解。
比如,在一个汽车租赁系统中,可能会有一个 Car 类来维护汽车的信息,如品牌、型号、车牌号等。这个 Car 类应该只负责这些信息的维护,而不应该涉及到租赁流程的处理。
在这种情况下,我们可以将租赁流程的处理放到另一个 Rental 类中,这样就实现了单一职责原则。具体的代码实现如下所示:
class Car {
private String brand;
private String model;
private String licensePlate;
// 省略其他属性和方法
}
class Rental {
private Car car;
private Date startDate;
private Date endDate;
private Customer customer;
// 省略其他属性和方法
public void rentCar() {
// 处理租车流程
}
public void returnCar() {
// 处理还车流程
}
}
在这种情况下,Car 类只负责维护汽车的信息,而 Rental 类负责处理租车流程。这样就实现了单一职责原则,使得类的职责尽量简单,更容易设计、维护和理解。
在实际项目开发中,单一职责原则是一个很重要的设计原则。它可以帮助我们将系统划分成若干个简单的类或模块,使得系统的结构更加清晰、可维护。同时,单一职责原则也有助于提高代码的可测试性和可扩展性。
2.2.开放封闭原则(Open-Closed Principle,简称 OCP)
开放封闭原则(Open-Closed Principle,简称 OCP)是指一个软件实体应该对扩展开放,对修改封闭。也就是说,在设计一个软件系统时,应该尽量使得这个系统能够扩展新的功能,而不需要修改现有的代码。
这个原则的核心思想是:在软件开发过程中,对于已经实现的代码,应该尽量避免对其进行修改,而是使用新的代码来扩展系统的功能。这样的设计可以使得系统更加稳定,也更加易于维护和扩展。
举个例子,假设有一个 Order 类,这个类负责处理订单的管理。我们可以使用开放封闭原则来设计这个类,如下所示: