
设计模式
文章平均质量分 56
mjmyx
这个作者很懒,什么都没留下…
展开
-
职责链模式
职责链模式 动机 在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时只能有一个接受者,如果显式指定,将必不可少地带来请求发送者与接受者的紧耦合。 如何使请求的发送者不需要指定具体的接受者?让请求的接受者自己在运行时决定来处理请求,从而使两者解耦。 意图 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。 相当于将每个可以处理的人串在一起,接收到的事件自己处理不好就交给下一个 结构原创 2021-07-06 20:07:52 · 212 阅读 · 0 评论 -
设计模式之策略模式
策略模式 动机 在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担。 如何在运行时根据需要透明地更改对象的算法?将算法与对象本身解耦,从而避免上述问题? 意图 定义一系列算法,把它们一个个封装起来,并且使它们可互相替换。该模式使得算法可独立于使用它的客户而变化。 结构 生活中的例子 超市购物,根据总价有不同的优惠策略: 不折扣现金,要赠品 满300元送100元 打8折 ………. 实现原创 2021-06-15 10:37:32 · 108 阅读 · 0 评论 -
设计模式之组合模式
组合模式 1.动机 在面向对象系统中,我们常会遇到一类具有“容器”特征的对象——即它们在充当对象的同时,又是其他对象的容器。 如何将“客户代码与复杂的对象容器结构”解耦?让对象容器自己来实现自身的复杂结构,从而使得客户代码就像处理简单对象一样来处理复杂的对象容器? 2.意图 将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。 3.结构 在客户端调用的时候,如果这个Component是leaf的时候,就调用其中的方法,如果不是则向下递归调用原创 2021-05-25 19:08:18 · 146 阅读 · 0 评论 -
外观模式
外观模式 1. 引入 例子:写信 需要四个步骤,写信的内容——写信封地址、收信人——把信封好——寄信 代码实现: #region 普通的实现方法 /// <summary> /// 写信过程的接口 /// </summary> public interface ILetterProcess { /// <summary> /// 写信 /// </summary> /// <param name="context">原创 2021-04-08 19:23:16 · 88 阅读 · 0 评论 -
设计模式——单例模式
常规写法 public class SingletonSample6 { //为了一个单例模式写很多的代码不合适,有一个懒人模式 private static readonly Lazy<SingletonSample6> _instance = new Lazy<SingletonSample6>(() => new SingletonSample6()); private int _counter = 0; //private外边不能被创建原创 2021-04-06 20:16:24 · 78 阅读 · 0 评论