SOLID原则详解与PHP实战示例
SOLID是面向对象编程的五大设计原则,旨在提升代码的可维护性、扩展性和复用性。
SOLID每个字母代表一个原则
- SRP(单一职责原则):一个类应该只有一个引起变化的原因。也就是说,一个类应该只负责一项职责。
- OCP(开闭原则):软件实体应该对扩展开放,对修改关闭。即通过扩展来实现变化,而不是修改现有代码。
- LSP(里氏替换原则):子类应该能够替换其父类,并且不会破坏程序的正确性。
- ISP(接口隔离原则):客户端不应该被迫依赖它们不使用的接口。即接口应该小而专注,而不是大而全。
- DIP(依赖倒置原则):高层模块不应该依赖低层模块,两者都应该依赖抽象。抽象不应该依赖细节,细节应该依
结合PHP代码示例逐一解析:
1. SRP(单一职责原则)
定义:一个类应仅有一个引起变化的原因,即专注于单一功能。
违反示例:
class OrderProcessor {public function process(Order $order) {// 处理订单逻辑$this->saveToDatabase($order);$this->sendConfirmationEmail($order);}private function saveToDatabase(Order $order) { /* ... */ }private function sendConfirmationEmail(Order $order) { /* ... */ }
}
问题:OrderProcessor
同时负责订单处理和邮件发送,职责不单一。
改进方案:
class OrderProcessor {public function __construct(private OrderRepository $repository,private EmailService $emailService) {}public function process(Order $order) {$this->repository->save($order);$this->emailService->sendConfirmation($order);}
}class OrderRepository {public function save(Order $order) { /* 数据库操作 */ }
}class EmailService {public function sendConfirmation(Order $order) { /* 发送邮件 */ }