编程自学指南:java程序设计开发,设计思想开源框架-六大原则
设计思想开源框架 - 六大原则概述
编程自学指南:java程序设计开发,设计思想开源框架-六大原则
1. 单一职责原则(Single Responsibility Principle,SRP)
2. 开闭原则(Open Closed Principle,OCP)
3. 里氏替换原则(Liskov Substitution Principle,LSP)
4. 依赖倒置原则(Dependency Inversion Principle,DIP)
5. 接口隔离原则(Interface Segregation Principle,ISP)
6. 迪米特法则(Law of Demeter,LoD),也称为最少知识原则
1. 单一职责原则(Single Responsibility Principle,SRP)

- 定义:一个类应该只有一个引起它变化的原因。也就是说,一个类只负责一项职责。
- 案例:
// 职责单一的用户信息管理类
class UserInfoManager {
public void saveUserInfo(String username, String password) {
// 保存用户信息到数据库的逻辑
System.out.println("保存用户 " + username + " 的信息到数据库");
}
}
// 职责单一的用户登录验证类
class UserLoginValidator {
public boolean validateUser(String username, String password) {
// 验证用户登录信息的逻辑
System.out.println("验证用户 " + username + " 的登录信息");
return true;
}
}
public class SRPExample {
public static void main(String[] args) {
UserInfoManager userInfoManager = new UserInfoManager();
userInfoManager.saveUserInfo("testUser", "testPassword");
UserLoginValidator userLoginValidator = new UserLoginValidator();
userLoginValidator.validateUser("testUser", "testPassword");
}
}
- 解析:
UserInfoManager类只负责用户信息的保存,UserLoginValidator类只负责用户登录信息的验证。如果保存用户信息的数据库操作发生变化,只需要修改UserInfoManager类;如果登录验证逻辑改变,只需要修改UserLoginValidator类。 - 重点:将不同的职责分离到不同的类中,降低类的复杂度,提高类的可读性和可维护性。
2. 开闭原则(Open Closed Principle,OCP)

- 定义:软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。即当有新需求时,通过扩展已有代码来实现,而不是修改已有的代码。
- 案例:
// 抽象图形类
abstract class Shape {
abstract double area();
}
// 圆形类
class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
double area() {
return Math.PI * radius * radius;
}
}
// 矩形类
class Rectangle extends Shape {
private double length;
private double width;
public Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
@Override
double area() {
return length * width;
}
}
// 图形面积计算类
class AreaCalculator {
public double calculateArea(Shape shape) {
return shape.area();
}
}
public class OCPExample {
public static void main(String[] args) {
AreaCalculator calculator = new AreaCalculator();
Circle circle = new Circle(5);
Rectangle rectangle = new Rectangle(4, 6);
System.out.println("圆形面积: " + calculator.calculateArea(circle));
System.out.println("矩形面积: " + calculator.calculateArea(rectangle));
}
}
- 解析:
Shape是抽象类,Circle和Rectangle是具体的实现类。当需要添加新的图形(如三角形)时,只需要创建一个新的类继承Shape并实现&
Java开发六大设计原则自学指南

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



