随便引入一下不一定是下述内容
C# 设计模式概述
设计模式是软件开发中常见问题的经典解决方案,C# 中常用的设计模式通常分为三大类共23种(源自经典的"四人帮"《设计模式》一书):
一、创建型模式 (5种) - 解决对象创建问题
-
单例模式(Singleton) - 确保一个类只有一个实例 示例:全局配置对象、日志记录器
-
工厂方法模式(Factory Method) - 让子类决定实例化哪个类 示例:数据库连接工厂
-
抽象工厂模式(Abstract Factory) - 创建相关对象家族 示例:跨平台UI组件库
-
建造者模式(Builder) - 分步构建复杂对象 示例:SQL查询构建器、汉堡制作流程
-
原型模式(Prototype) - 通过克隆创建对象 示例:游戏中的怪物复制
二、结构型模式 (7种) - 处理类或对象组合
-
适配器模式(Adapter) - 转换接口以便兼容 示例:旧系统接口适配新系统
-
装饰器模式(Decorator) - 动态添加职责 示例:Stream的加密/压缩装饰
-
代理模式(Proxy) - 控制对象访问 示例:远程服务代理、图片懒加载
-
外观模式(Facade) - 简化复杂子系统接口 示例:一键备份功能封装多个模块
-
桥接模式(Bridge) - 分离抽象与实现 示例:不同数据库驱动实现
-
组合模式(Composite) - 树形结构处理 示例:菜单与子菜单的统一处理
-
享元模式(Flyweight) - 共享细粒度对象 示例:字符对象池、棋子的共享
三、行为型模式 (11种) - 处理对象间通信
-
策略模式(Strategy) - 封装可互换算法 示例:排序算法、支付方式切换
-
观察者模式(Observer) - 对象状态变更通知 示例:事件系统、股票价格通知
-
命令模式(Command) - 将请求封装为对象 示例:撤销/重做功能、任务队列
-
状态模式(State) - 对象行为随状态改变 示例:订单状态流转
-
责任链模式(Chain of Responsibility) - 请求传递链 示例:审批流程、异常处理链
-
模板方法模式(Template Method) - 算法骨架 示例:报表生成流程模板
-
迭代器模式(Iterator) - 顺序访问集合元素 示例:foreach遍历集合
-
中介者模式(Mediator) - 减少对象间直接通信 示例:聊天室中间人
-
备忘录模式(Memento) - 捕获并恢复对象状态 示例:游戏存档功能
-
访问者模式(Visitor) - 在不修改类的情况下添加操作 示例:文档导出功能
-
解释器模式(Interpreter) - 定义语法表示 示例:SQL解析器、规则引擎
其他重要模式
除了这23种经典模式,现代开发中还常用:
- 依赖注入模式(Dependency Injection) - 控制反转实现
- 仓储模式(Repository) - 数据访问抽象层
- 工作单元模式(Unit of Work) - 事务管理
- CQRS模式 - 命令查询职责分离
- MVVM模式 - 特别用于WPF/Xamarin开发
学习建议
- 从最常用的模式开始:单例、工厂、观察者、策略、装饰器
- 结合实际问题学习,不要死记硬背
- 注意不要过度设计,简单问题不需要复杂模式
- 现代C#语言特性(如委托、LINQ)已经内置了一些模式思想
这才是文章详讲的内容
创建型模式
单例模式
工厂方法模式
抽象工厂模式
建造者模式
原型模式
结构型模式
适配器模式
桥接模式
组合模式
装饰模式
外观模式
享元模式
代理模式
行为型模式
访问者模式
模板模式
策略模式
状态模式
观察者模式
备忘录模式
中介者模式
迭代器模式
解释器模式
命令模式
责任链模式