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

一、面向对象设计原则(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/规则引擎解析器
中介者模式 降低对象间耦合 聊天系统、表单校验中介者


 三、应用建议

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

你可能感兴趣的:(php,java,设计模式)