单一职责原则(Single Responsibility Principle,简称SRP)是面向对象设计中的一个重要原则,它指出一个类应该只有一个引起变化的原因。换句话说,每个类都应该有一个明确的任务,只做一件事,并做好这件事。这样做可以提高代码的可维护性和可重用性,降低复杂性,并减少不同模块之间的耦合度。
例如,假设你正在开发一个电子商务网站,你需要处理订单。在最初的设计中,你可能有一个名为 Order 的类,它负责处理订单的所有方面,包括计算价格、更新库存、发送邮件通知等等。然而,随着时间的发展,你会发现这些功能的变化原因各不相同。价格计算可能因为促销活动而频繁更改,而邮件通知可能因为市场营销策略而调整。这时,按照单一职责原则,你应该将 Order 类拆分为多个独立的类,每个类只负责一项任务,如 PriceCalculator、InventoryManager 和 EmailNotifier。
以下是伪代码示例:
```
// 原始的 Order 类
class Order {
double calculatePrice() {...}
void updateInventory() {...}
void sendNotificationEmail() {...}
}
// 拆分后的类
class PriceCalculator {
double calculatePrice() {...}
}
class InventoryManager {
void updateInventory() {...}
}
class EmailNotifier {
void sendNotificationEmail() {...}
}
// 主要的 Order 类现在只负责协调工作
class Order {
private final PriceCalculator priceCalculator;
private final InventoryManager inventoryManager;
private final EmailNotifier emailNotifier;
public Order(PriceCalculator priceCalculator, InventoryManager inventoryManager, EmailNotifier emailNotifier) {
this.priceCalculator = priceCalculator;
this.inventoryManager = inventoryManager;
this.emailNotifier = emailNotifier;
}
public void processOrder() {
double price = priceCalculator.calculatePrice();
inventoryManager.updateInventory();
emailNotifier.sendNotificationEmail();
}
}
```
这样,每当需要调整某个功能时,只需要关注相应的类即可,而不是整个 Order 类。这使得系统更加灵活,更容易维护和扩展。