当前位置: 首页 > news >正文

【软件设计】SOLID原则详解与PHP实战示例

SOLID原则详解与PHP实战示例

SOLID是面向对象编程的五大设计原则,旨在提升代码的可维护性、扩展性和复用性。

SOLID每个字母代表一个原则

  1. SRP(单一职责原则):一个类应该只有一个引起变化的原因。也就是说,一个类应该只负责一项职责。
  2. OCP(开闭原则):软件实体应该对扩展开放,对修改关闭。即通过扩展来实现变化,而不是修改现有代码。
  3. LSP(里氏替换原则):子类应该能够替换其父类,并且不会破坏程序的正确性。
  4. ISP(接口隔离原则):客户端不应该被迫依赖它们不使用的接口。即接口应该小而专注,而不是大而全。
  5. 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) {
    /* 发送邮件 */ }

相关文章:

  • PageForge v2025.1.6 发布:支持 KaTeX 数学公式渲染
  • Spring AI + 大模型开发应用
  • 爬楼梯问题
  • 【Alertmanager】Alertmanager告警路由,告警静默,告警抑制,高可用的实现
  • CryptoJS库中WordArray对象支持哪些输出格式?除了toString() 方法还有什么方法可以输出吗?WordArray对象的作用是什么?
  • Python入门教程丨3.8 网络编程
  • 计算机毕业设计 ——jspssm504springboot 职称评审管理系统
  • Redis搭建集群
  • linux--多进程开发(4) 进程退出、孤儿进程、僵尸进程、进程回收wait()
  • 从最小依赖角度谈静态库与动态库的选择及配置策略
  • 【大模型学习】Transformer架构解析
  • IDEA集成DeepSeek,通过离线安装解决无法安装Proxy AI插件问题
  • Linux修改Redis密码
  • 编程算法总结
  • 【初阶数据结构】树和二叉树
  • 已有项目添加vitepress
  • 硬件基础(3):三极管(1):理论基础
  • 补题A-E Codeforces Round 953 (Div. 2)
  • 【Qt源码】窥视信号槽实现机制
  • jdk21下载、安装(Windows、Linux、macOS)
  • 家政服务网站建设/免费行情软件网站下载大全
  • 虚拟机 网站建设/疫情防控最新信息
  • 济南多语言网站建设/营销推广的特点
  • 个人网站模版下载/创建网站
  • WordPress搬家后所有页面404/seo交流网
  • 网站ps照片怎么做/东莞网站制作公司