C#设计模式--单例模式

随便引入一下不一定是下述内容

C# 设计模式概述

设计模式是软件开发中常见问题的经典解决方案,C# 中常用的设计模式通常分为三大类共23种(源自经典的"四人帮"《设计模式》一书):

一、创建型模式 (5种) - 解决对象创建问题

  1. 单例模式(Singleton) - 确保一个类只有一个实例 示例:全局配置对象、日志记录器

  2. 工厂方法模式(Factory Method) - 让子类决定实例化哪个类 示例:数据库连接工厂

  3. 抽象工厂模式(Abstract Factory) - 创建相关对象家族 示例:跨平台UI组件库

  4. 建造者模式(Builder) - 分步构建复杂对象 示例:SQL查询构建器、汉堡制作流程

  5. 原型模式(Prototype) - 通过克隆创建对象 示例:游戏中的怪物复制

二、结构型模式 (7种) - 处理类或对象组合

  1. 适配器模式(Adapter) - 转换接口以便兼容 示例:旧系统接口适配新系统

  2. 装饰器模式(Decorator) - 动态添加职责 示例:Stream的加密/压缩装饰

  3. 代理模式(Proxy) - 控制对象访问 示例:远程服务代理、图片懒加载

  4. 外观模式(Facade) - 简化复杂子系统接口 示例:一键备份功能封装多个模块

  5. 桥接模式(Bridge) - 分离抽象与实现 示例:不同数据库驱动实现

  6. 组合模式(Composite) - 树形结构处理 示例:菜单与子菜单的统一处理

  7. 享元模式(Flyweight) - 共享细粒度对象 示例:字符对象池、棋子的共享

三、行为型模式 (11种) - 处理对象间通信

  1. 策略模式(Strategy) - 封装可互换算法 示例:排序算法、支付方式切换

  2. 观察者模式(Observer) - 对象状态变更通知 示例:事件系统、股票价格通知

  3. 命令模式(Command) - 将请求封装为对象 示例:撤销/重做功能、任务队列

  4. 状态模式(State) - 对象行为随状态改变 示例:订单状态流转

  5. 责任链模式(Chain of Responsibility) - 请求传递链 示例:审批流程、异常处理链

  6. 模板方法模式(Template Method) - 算法骨架 示例:报表生成流程模板

  7. 迭代器模式(Iterator) - 顺序访问集合元素 示例:foreach遍历集合

  8. 中介者模式(Mediator) - 减少对象间直接通信 示例:聊天室中间人

  9. 备忘录模式(Memento) - 捕获并恢复对象状态 示例:游戏存档功能

  10. 访问者模式(Visitor) - 在不修改类的情况下添加操作 示例:文档导出功能

  11. 解释器模式(Interpreter) - 定义语法表示 示例:SQL解析器、规则引擎

其他重要模式

除了这23种经典模式,现代开发中还常用:

  1. 依赖注入模式(Dependency Injection) - 控制反转实现
  2. 仓储模式(Repository) - 数据访问抽象层
  3. 工作单元模式(Unit of Work) - 事务管理
  4. CQRS模式 - 命令查询职责分离
  5. MVVM模式 - 特别用于WPF/Xamarin开发

学习建议

  1. 从最常用的模式开始:单例、工厂、观察者、策略、装饰器
  2. 结合实际问题学习,不要死记硬背
  3. 注意不要过度设计,简单问题不需要复杂模式
  4. 现代C#语言特性(如委托、LINQ)已经内置了一些模式思想

这才是文章详讲的内容


创建型模式

  • 单例模式

  • 工厂方法模式

  • 抽象工厂模式

  • 建造者模式

  • 原型模式

结构型模式

  • 适配器模式

  • 桥接模式

  • 组合模式

  • 装饰模式

  • 外观模式

  • 享元模式

  • 代理模式

行为型模式

  • 访问者模式

  • 模板模式

  • 策略模式

  • 状态模式

  • 观察者模式

  • 备忘录模式

  • 中介者模式

  • 迭代器模式

  • 解释器模式

  • 命令模式

  • 责任链模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值