设计模式之设计原则及分类

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

面向对象设计原则和前人总结出来的设计模式是软件工程中非常重要的概念思想,主要为我们日常的开发中提供了一套完整的开发思想,帮助我们在日常开发中构建更加灵活、可维护和可扩展的系统。


一、设计原则

设计原则解释实际使用案例
单一指责原则一个类应该只有一个引起它变化的原因(即一个类只负责一个职责)Spring框架中的工厂模式
开闭原则软件实体(类、模块、函数)应对扩展开放,对修改关闭常见的如策略模式的实现
里氏替换原则子类必须能够替换其父类,且不会破坏程序正确性多态思想向下转型的使用
接口隔离原则建立单一接口,接口中避免承担过多的责任(方法)Spring中抽象工厂的实现
依赖倒置原则细节依赖抽象,下层依赖上层如模版模式在:抽象类中定义算法框架,具体步骤由子类实现

二、设计模式分类

总结不同设计模式的分类,后面补充对应案例及文章去理解设计模式的使用(文章地址同步更新)

1.创建型模式

解决对象创建过程中的复杂性问题,提供灵活的实例化机制性。

1.将对象的创建与使用分离,避免硬编码依赖。显著使用时减少类创建 new 的使用
2.通过抽象化实例化过程,支持动态配置对象类型。

模式名称解释案例文章地址
工厂方法定义一个创建对象的接口,由子类决定实例化哪个类 )支付方式工厂(支付宝/微信)链接: 工厂模式
抽象工厂创建一组相关或依赖的对象家族,无需指定具体类跨平台UI组件库(Windows/Mac)
单例确保一个类只有一个实例,并提供全局访问点数据库连接池、日志管理器
建造者分步骤构建复杂对象,允许不同表示形式构造SQL查询、定制化套餐订单
原型通过复制现有对象来创建新对象,避免重复初始化游戏中的敌人克隆、配置模板复制

2.结构型模式

通过组合类或对象形成更大的结构,解决系统模块间的组织问题。

1.关注类与对象之间的静态关系(继承、组合、代理等)。
2.提升系统的可扩展性和复用性。

模式名称解释案例文章地址
适配器将不兼容的接口转换为客户端期望的接口旧系统接口适配新API(如XML→JSON)
桥接将抽象与实现分离,使两者可独立变化不同图形渲染引擎(OpenGL/Vulkan)
组合以树形结构处理部分-整体关系,统一对待单个对象和组合对象文件系统(文件/文件夹统一操作)
装饰器动态地为对象添加额外职责,避免子类膨胀Java I/O流(BufferedInputStream)
代理为其他对象提供一种代理以控制对这个对象的访问远程服务代理、懒加载图片
外观为子系统提供统一的简化接口,降低复杂度电商下单接口整合库存、支付、物流
享元共享大量细粒度对象,减少内存消耗字符渲染池、游戏中的粒子系统

3.行为型模式

优化对象之间的通信和职责分配,提升系统运行的灵活性。
1.关注对象间的交互和算法封装。
2.解耦发送者和接收者,避免紧耦合。

模式名称解释案例文章地址
策略定义一系列算法并使其可互换,隔离算法使用与实现排序算法(快速排序/冒泡排序)链接: 策略模式
观察者定义对象间的一对多依赖,当一个对象状态改变时自动通知依赖对象事件监听、消息推送系统
命令将请求封装为对象,支持请求的排队、日志、撤销等操作文本编辑器中的撤销/重做功能
状态允许对象在内部状态改变时改变其行为订单状态流转(待支付/已发货)
责任链将请求的发送者和接收者解耦,使多个对象都有机会处理请求审批流程(经理→总监→CEO)
模板方法定义算法骨架,将某些步骤延迟到子类实现咖啡制作流程(煮水→加料→冲泡)
迭代器提供一种方法顺序访问聚合对象的元素,而无需暴露底层表示Java中的 Iterator 接口
中介者通过中介对象封装一系列对象交互,减少对象间直接引用聊天室(用户通过服务器中转消息)
备忘录捕获对象内部状态并在需要时恢复,支持撤销操作游戏存档、事务回滚
访问者将算法与对象结构分离,便于新增操作而无需修改结构文件格式导出(PDF/XML转换器)
解释器定义语言的文法表示,并解释执行SQL解析、正则表达式引擎

总结

设计原则是“道”:提供指导思想,塑造代码哲学。
设计模式是“术”:提供具体工具,解决特定问题。
二者结合能写出高内聚、低耦合、易扩展的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值