php java go python面向对象的设计原则和常用设计模式

发布于:2025-05-09 ⋅ 阅读:(18) ⋅ 点赞:(0)

一、面向对象设计原则(OOP Design Principles)

是写出高内聚、低耦合、可维护系统的基础,重点是 SOLID 五大原则 + 其他补充原则。

📌 SOLID 五大设计原则:

原则名称 全称 核心思想 示例关键词
S 单一职责原则 Single Responsibility Principle 一个类只负责一项职责 拆分类、分离逻辑
O 开闭原则 Open-Closed Principle 对扩展开放,对修改关闭 插件式架构
L 里氏替换原则 Liskov Substitution Principle 子类应能替代父类 多态、接口隔离
I 接口隔离原则 Interface Segregation Principle 客户端不应依赖它不使用的方法 多个小接口
D 依赖倒置原则 Dependency Inversion Principle 高层模块不依赖低层模块,依赖抽象 接口注入、构造注入


📌 其他常见设计原则:

原则名称 核心思想 示例
迪米特法则(最少知道原则) 一个对象应当尽量少了解其他对象的内部细节 避免链式调用 $a->b->c()
组合优于继承 多用组合(has-a),少用继承(is-a) 优先注入依赖而不是继承
封装变化 把可能变化的部分封装起来 策略模式、适配器模式等


二、常用设计模式(Design Patterns)

解决特定软件开发问题的通用方案

分为三大类:

创建型

结构型

行为型


🔷 1. 创建型模式(解决“如何创建对象”)

模式名称 作用 示例场景
单例模式 保证一个类只有一个实例 数据库连接、配置管理
工厂模式 统一对象创建过程 支付网关、消息驱动
抽象工厂模式 创建一组相关对象 UI组件、操作系统接口
建造者模式 按步骤构建复杂对象 报表生成器
原型模式 通过复制已有对象创建新对象 复制模板对象


🔷 2. 结构型模式(解决“如何组织类与对象”)

模式名称 作用 示例场景
适配器模式 兼容不同接口 第三方 SDK 封装
装饰器模式 动态添加功能 Laravel 中间件
代理模式 控制对对象的访问 延迟加载、权限控制
外观模式 提供简化统一接口 Laravel 门面
桥接模式 解耦抽象与实现 不同平台 UI 样式分离
组合模式 组织树状结构 目录结构、菜单组件
享元模式 共享对象以节省内存 字体、图标缓存


🔷 3. 行为型模式(解决“对象如何交互”)

模式名称 作用 示例场景
观察者模式 发布-订阅 Laravel 事件监听器
策略模式 可切换算法 多种支付/排序/折扣策略
模板方法模式 固定流程,子类定细节 控制器继承基础逻辑
责任链模式 多个对象依次处理请求 Laravel 中间件链
命令模式 封装请求为对象 队列任务、撤销操作
状态模式 封装状态和行为 订单状态机
备忘录模式 保存对象历史状态 撤销、版本恢复
迭代器模式 顺序访问集合元素 遍历集合对象
解释器模式 解析语言语法表达式 SQL/规则引擎解析器
中介者模式 降低对象间耦合 聊天系统、表单校验中介者


 三、应用建议

场景 建议使用
业务逻辑解耦 观察者、策略、模板方法
接入第三方服务 适配器、代理、外观
增加功能但不改原类 装饰器、责任链
对象创建复杂 建造者、工厂、抽象工厂
系统模块间解耦 中介者、桥接、外观

网站公告

今日签到

点亮在社区的每一天
去签到