![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
11种行为型设计模式
成风一二
这个作者很懒,什么都没留下…
展开
-
23种设计模式----状态模式(State Pattern)
*状态模式(State Pattern)* **允许一个对象在其内部状态改变时自动改变其行为,对象看起来就像是改变了它的类。** 例子:黄灯改变会变成红灯,红灯改变会变成绿灯。1)抽象状态类(State类):抽象状态类定义了一个具体状态类需要实现的行为约定。2)具体状态类(...翻译 2019-03-05 17:06:10 · 235 阅读 · 0 评论 -
23种设计模式----模板方法(Template Method)
你去银行取款的时候,银行会给你一张取款单,这张取款单就是一个模板,它把公共的内容提取到模板中,只留下部分让用户来填写。在软件系统中,将多个类的共有内容提取到一个模板中的思想便是模板方法模式的思想。模板方法模式是基于继承的代码复用基本技术,在模板方法模式中,可以将相同的代码放在父类中,而将不同的方法实现放在不同的子类中。在模板方法模式中,需要准备一个抽象类,将部分逻辑以具体方法以及具体构造函数形...转载 2019-03-18 16:16:36 · 140 阅读 · 0 评论 -
23种设计模式----命令模式(CommandPattern)
命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。每一个命令都是一个操作:请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执行操作。命令模式允许请求的一方和接收的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否被执行、何时被执行,以及是怎么被执行的。public class Tv{ public int cu...转载 2019-03-18 15:19:10 · 133 阅读 · 0 评论 -
23种设计模式----解释器模式(Interpreter Pattern)
在软件构建过程中,如果某一特定领域的问题比较复杂,类似的模式不断重复出现,如果使用普通的编程方式来实现将面临非常频繁的变化。在这种情况下,将特定领域的问题表达为某种语法规则下的句子,然后构建一个解释器来解释这样的句子,从而达到解决问题的目的。interface IExpression{ void Interpret(StringBuilder sb);}public class ...翻译 2019-03-12 16:03:23 · 173 阅读 · 0 评论 -
23种设计模式----中介者模式(Mediator Pattern)
中介者模式,定义了一个中介对象来封装一系列对象之间的交互关系。中介者使各个对象之间不需要显式地相互引用,从而使耦合性降低,而且可以独立地改变它们之间的交互行为。中介者模式设计两个具体对象,一个是用户类,另一个是中介者类,根据针对接口编程原则,则需要把这两类角色进行抽象,所以中介者模式中就有了4类角色,它们分别是:抽象中介者角色,具体中介者角色、抽象同事类和具体同事类。中介者类是起到协调各个对象的...翻译 2019-03-12 10:20:28 · 158 阅读 · 0 评论 -
23种设计模式----职责链模式(Chain of Responsibility Pattern)
责任链模式指的是——某个请求需要多个对象进行处理,从而避免请求的发送者和接收之间的耦合关系。将这些对象连成一条链子,并沿着这条链子传递该请求,直到有对象处理它为止public class BehaviourRequest{ public double money { get; set; } public string activityName { get; set; } ...翻译 2019-03-11 16:46:51 · 110 阅读 · 0 评论 -
补充:yield关键字用法
使用yield return返回集合,不是一次性加载到内存中,而是客户端每调用一次就返回一个集合元素,是一种"按需供给"。class Program{ static Random r = new Random(); static IEnumerable<int> GetList(int count) { List<int> lis...转载 2019-03-15 14:08:23 · 226 阅读 · 0 评论 -
23种设计模式----迭代器模式(IteratorPattern)
迭代器模式是设计模式中行为模式(behavioral pattern)的一个例子,他是一种简化对象间通讯的模式,也是一种非常容易理解和使用的模式。简单来说,迭代器模式使得你能够获取到序列中的所有元素而不用关心是其类型是array,list,linked list或者是其他什么序列结构。这一点使得能够非常高效的构建数据处理通道(data pipeline)–即数据能够进入处理通道,进行一系列的变换,...转载 2019-03-14 16:59:02 · 179 阅读 · 0 评论 -
23种设计模式----备忘录模式(Memento Pattern)
在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以把该对象恢复到原先的状态。发起人角色:记录当前时刻的内部状态,负责创建和恢复备忘录数据。备忘录角色:负责存储发起人对象的内部状态,在进行恢复时提供给发起人需要的状态。管理者角色:负责保存备忘录对象。public class Person{ public string name { get; s...翻译 2019-03-07 13:30:31 · 220 阅读 · 0 评论 -
23种设计模式----策略模式(Strategy Pattern)
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。抽象策略角色: 策略类,通常由一个接口或者抽象类实现。具体策略角色:包装了相关的算法和行为。环境角色:持有一个策略类的引用,最终给客户端调用。public abstract class Calculate{ public abstract void cal()...翻译 2019-03-06 17:16:05 · 175 阅读 · 0 评论 -
23种设计模式----访问者模式(Visitor Pattern)
由于需求的改变,某些类常常需要增加新的功能,但由于种种原因这些类层次必须保持稳定,不允许开发人员随意修改。对此,访问者模式可以在不更改类层次结构的前提下透明的为各个类动态添加新的功能。访问者模式通过双重分派(double dispatch)的方法来透明的为各个类添加新的功能,第一重分派是指Accept方法的多态,第二重分派是指Visit方法的多态。public abstract class V...翻译 2019-03-06 16:42:58 · 173 阅读 · 0 评论 -
23种设计模式----观察者模式(Observer Pattern)
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。public abstract class Observer{ public abstract void Update();}public class Subject{ private List<Observer> subList = new List&l...翻译 2019-03-13 15:38:23 · 147 阅读 · 0 评论