设计模式
基于C#语言的设计模式。
平底锅锅锅
走过路过不要错过
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
IOC设计模式
简介:原创 2020-11-04 14:50:13 · 2367 阅读 · 0 评论 -
解释器模式
简介: 解释器模式的意图是给定一个语言,定义它的文法的一种表示,并定义一种解释器,这个解释器使用该表示来解释语言中的句子。例如R = R1 + R2,常规的理解是整数相加,但可以给定特殊的含义,这就可用到解释器模式,类似重写“+=”、“-+”等。 介绍: 解释器模式结构 特征 优点 1.提供了新的解释表达式的方式。 2.易于实现简单文法...原创 2020-03-23 13:48:48 · 386 阅读 · 0 评论 -
备忘录模式
简介: 备忘录模式的意图是在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态(如果没有这个关键点,其实深拷贝就可以解决问题)。这样以后就可以将该对象恢复到原先保存的状态。 可使用数据回滚,恢复先前状态。 介绍: 备忘录模式结构 特征 优点 1.将数据恢复成原来正确的数据,配合文件、数据库等存储方式。 ...原创 2020-03-20 10:39:22 · 344 阅读 · 0 评论 -
访问者模式
简介: 访问者模式的意图是表示一个作用于某对象结构中的各个元素的操作。它可以在不改变各元素的类的前提下定义作用于这些元素的新的操作。 介绍: 访问者模式结构 特征 优点 1.增加新的操作就意味着添加一个新的访问者类。 2.行为操作集中到结构对象,,类似中介模式。 缺点 1.每增加一个节点,抽象访问者也许变动。 特点...原创 2020-03-19 15:45:27 · 254 阅读 · 0 评论 -
责任链模式
简介: 职责链模式的意图是 避免请求发送者与接收者耦合在一起,让多个对象都有可能接受请求,将这些对象连接成一条链,并且沿着这条链传递请求,知道有对象处理它为止。 介绍: 职责链模式结构 特征 优点 1.降低对象间的耦合度。客户端负责具体链的创建。 2.仅需要一个指向下一个对应的引用,简化对象连接。 缺点 1...原创 2020-03-19 14:55:05 · 303 阅读 · 0 评论 -
策略模式
简介: 策略模式的意图是定义一系列算法,把它们一个个封装起来,并且使它们可互相替换。该模式使得算法可独立于使用它的客户而变化。 介绍: 策略模式结构 特征 优点 1.易于扩展,新增具体策略类即可。 2.避免使用条件选择语句。 3.由于环境角色内有公共策略接口,方便切换。 缺点 1.策略类全部需要暴露给客...原创 2020-03-19 14:07:12 · 361 阅读 · 0 评论 -
状态模式
简介: 状态模式的意图是允许一个对象在其内部状态改变时改变它的行为。从而使对象看起来似乎修改了其行为。 介绍: 状态模式结构 特征 优点 1.将状态对象统一,对象状态的改变即改变对象的行为。 2.共用对象,减少个数,防止对象串用。 缺点 1.系统复杂,不是完全的“开闭原则”。 特点 1.对象的行为依赖对象的状...原创 2020-03-19 11:19:51 · 242 阅读 · 0 评论 -
中介模式
简介: 中介模式的意图是定义了一个中介对象来封装一系列对象之间的交互关系。中介者使各个对象之间不需要显式地相互引用,从而使耦合性降低,而且可以独立地改变它们之间的交互行为。 介绍: 中介模式结构 特征 优点 1.多个对象之间松耦合。 2.中介者对多个对象集中管理,对象之间无关联。多对多变成一对多。 缺点 1.如果对象过...原创 2020-03-18 16:31:44 · 593 阅读 · 2 评论 -
观察者模式
简介: 定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。event中,委托充当了抽象的Observer接口,而提供事件的对象充当了目标对象。委托是比抽象Observer接口更为松耦合的设计。 介绍: 观察者模式结构 特征 优点 1.被观察者和观察者之间建立了一个抽象的耦合,被观察者保...原创 2020-03-18 14:46:19 · 238 阅读 · 0 评论 -
迭代器模式
简介: 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。例如抽象聚合角色(Aggregate)和抽象迭代器角色(Iterator)分别是IEnumerable接口和IEnumerator接口,具体聚合角色(ConcreteAggregate)有Queue类型,BitArray等类型。 介绍: 迭代器模式结构 特征 优点 ...原创 2020-03-18 10:31:01 · 299 阅读 · 0 评论 -
命令模式
简介: 命令模式将一个请求封装为一个对象,不同的请求对应相应的接受者执行对应的方法。例如系统命令的撤销和回滚、数据更新时的取消回滚、回调等场景可考虑使用命令模式。 介绍: 命令模式结构 特征 优点 1.新命令更容易加入系统。 缺点 1.命令过多时会产生过多的具体命令。 特点 1.请求者和接受者解耦。 角色 ...原创 2020-03-17 16:33:11 · 358 阅读 · 0 评论 -
模板模式
简介: 模板方法模式定义一个操作中的算法的顺序,而将一些步骤扩展到子类中。Application应用程序会有自己的声明周期,例如值的存储在作用域结束后得释放是有固定顺序的。还有GC的垃圾回收机制。 介绍: 模板方法模式结构 特征 优点 1.代码复用。 2.子类扩展,模板稳定。 特点 1.模板步骤稳定。 角...原创 2020-03-17 15:12:09 · 217 阅读 · 0 评论 -
代理模式
简介: 为其他对象提供一种代理以控制对这个对象的访问。客户端不直接访问对象,而是访问代理对象。可用在不同级别的使用权限。 介绍: 代理模式结构 特征 优点 1.被调用的对象隔离,降低了系统的耦合度; 2.代理对象在代理操作,可增加代理功能,增加对象的灵活度。 缺点 1.由于新增代理对象,复杂度增加,访问时间增加。 特点 1...原创 2020-03-17 13:55:55 · 268 阅读 · 0 评论 -
享元模式
简介: 享元模式使用或创建共享使用大量类似的对象。 介绍: 享元模式结构 特征 优点 1.减少系统创建的个数。因为无需多次创建,静态保存,可共享使用。 2.外部状态和内部相对独立。 缺点 1.存在内部状态和外部状态,增加复杂度。 特点 1.创建大量的对象。 2.对象可共享使用。 ...原创 2020-03-17 09:21:46 · 226 阅读 · 0 评论 -
外观模式
简介: 外观模式是为了访问子系统中的一组接口提供一个全局的一个接口。 介绍: 外观模式结构 特征 优点 1.对客户屏蔽了子系统组件,从而简化了接口,减少了客户处理的对象数目并使对子系统的使用更加简单。 2.实现了子系统与客户之间的松耦合关系,而子系统内部的功能组件是紧耦合的。松耦合使得子系统的组件变化不会影响到它的客户。 缺点 1....原创 2020-03-16 11:45:32 · 308 阅读 · 0 评论 -
组合模式
简介: 介绍: 使用: //Component public abstract class Shape { public abstract void Add(Shape shape); public abstract void Remove(Shape shape); public abstract voi...原创 2020-03-15 11:30:42 · 273 阅读 · 0 评论 -
装饰模式
简介: 装饰者模式可以对一个对象添加额外的功能而又不改变对象内方法的签名。Stream类型是一个抽象接口,它在System.IO命名空间里面,本质上就是Component。FileStream、NetworkStream、MemoryStream都是实体类ConcreteComponent。 介绍: 装饰者模式结构 角色 抽象构件角色(Component) ...原创 2020-03-13 15:31:31 · 459 阅读 · 0 评论 -
桥接模式
简介: 桥接模式用在相同的东西在不同维度实现相同的功能。例如,数据库适用在Windows和Linux平台上或者游戏跨平台。 介绍: 桥接模式的结构包括Abstraction、RefinedAbstraction、Implementor、ConcreteImplementorA和ConcreteImplementorB。 桥接模式原理 角色 抽象化角色...原创 2020-03-12 21:29:57 · 300 阅读 · 0 评论 -
适配器模式
简介: 适配器模式用在一个部分要用在另外一个部分时所需做的对接。例如两个插头想插在三个插头的插座上,需要转接头。 介绍: 1.对象适配器 优点 1.‘’对象组合‘’方式符合松耦合。 2.在不更改现有代码的基础上复用现有类,符和‘’开闭原则‘’。 缺点 1.如果需要适配器(Adapter)适配被适配器(Adaptee)...原创 2020-03-11 16:44:42 · 226 阅读 · 0 评论 -
原型模式
简介: 使用原型模式不需要每次都new一个新的实例,而是通过拷贝原有的对象来完成创建,这样不需要在内存中创建多个对象,也不需要重复复杂的创建过程了。实际修改对象的时候需要注意浅复制带来的影响,引用对象实际上是同一个对象。 介绍: 优点 1.隐藏了创建实例的繁琐过程,只需通过Clone方法就可以获取实例对象。 2.用浅拷贝替代new,减少资源消耗。 ...原创 2020-03-11 14:27:15 · 234 阅读 · 0 评论 -
建造者模式
简介: 抽象工厂模式解决了“多系列产品”的需求变化,而建造者模式解决的是 “产品部分” 的需要变化。更适用于产品内部的剧烈变化但是实现产品的最终顺序一致。StringBuilder类,它就是一个建造者模式的实现。建造者模式有四个角色:建造者,具体的建造者,指导者,产品角色。 优点 1.可以使客户端不必知道产品内部组成的细节。 2.具体的建造者类...原创 2020-03-11 13:44:01 · 356 阅读 · 0 评论 -
工厂模式
简介:工厂模式有三种,分别是简单工厂、工厂方法、抽象工厂。 简单工厂: 简单工厂模式的工厂类随着产品类的增加需要增加额外的代码,例如case或者if-else等。没有抽象工厂类,仅有产品抽象。 工厂方法: 简单工厂模式缺点,就是随着需求的变化我们要不停地修改工厂里面的方法的代码,需求变化越多,里面的case或者if-else也越多,这样就会造成简单工厂的实现逻辑过于复杂。这样的修改也是不符...原创 2020-03-11 09:47:58 · 222 阅读 · 0 评论 -
单例模式
简介: 单例是一个只允许创建自身的单个实例的类。单例模式是软件工程中最着名的模式之一。 使用: 特点:私有无参的构造函数,类不可继承,只有一个公共静态实例。 优点:单一实例。 缺点:不支持带参构造函数。 1.单线程安全 通过方法或属性返回实例。 多线程不安全,不建议使用。 public sealed class Singleton ...原创 2020-03-10 15:36:17 · 287 阅读 · 0 评论 -
设计模式
简介: 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 本文的设计模式,使用C#语言,案例可能不是最佳,仅供参考。其中部分内容参考了网上的一些文章。仅供学习。如有错误,欢迎指...原创 2020-03-23 16:58:27 · 302 阅读 · 0 评论
分享