设计模式
飞鸟慕鱼
这个作者很懒,什么都没留下…
展开
-
C# 设计模式-访问者模式
访问者模式:表示一个作用于某对象结构中各元素的操作。它使你可以在不改变个元素的前提下定义作用于这些元素的新操作。对象结构不能变,必须是固定的。原创 2021-06-11 16:07:39 · 271 阅读 · 1 评论 -
C# 设计模式-解释器模式
给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的例子。当一个语言需要解释执行,并且可以将该语言中的句子表示为抽象语法树时,可以使用解释器模式...原创 2021-06-11 14:50:48 · 278 阅读 · 1 评论 -
C# 设计模式-享元模式
享元模式的核心在于使用共同的代码来创建不一样的对象。把不同的点都拎出来,剩下相同的用同一套代码。 abstract class Website { public abstract void Use(User user); } class ConcreteWebsite : Website { public ConcreteWebsite(string name) { Name = nam原创 2021-06-09 16:41:31 · 157 阅读 · 0 评论 -
C# 设计模式-中介者模式
中介者模式可以协调多个毫无关系的对象,对于中介者来说,所有对象都必须是透明的,中介者保持所有对象的引用,知道所有引用对象的所有方法。毫无关系的对象可以用中介来转发消息。 abstract class Medaitor { public abstract void Send(string message, Colleague colleague); } class ConcreteMediator : Medaitor { priv原创 2021-06-09 16:10:26 · 215 阅读 · 0 评论 -
C# 设计模式-职责链模式
职责链模式类似于递归,将需要比较的东西一层一层的向下传递。或者说当自己没有能力处理问题时,向上抛出问题。关键是必须有自己上家的引用,以及向上家抛出问题的能力原创 2021-06-09 15:25:15 · 157 阅读 · 0 评论 -
C# 设计模式-桥接模式
实现系统可能有多角度分类,每一种分类都有可能变化,那么把这种多角度的变化抽离出来让他们独立变化,减少它们之间的耦合。 摘自(大话sheji)原创 2021-06-09 13:35:57 · 204 阅读 · 0 评论 -
C# 设计模式-组合模式
将对象组合成树形结构以表示“部分-整体'的层次结构”。组合模式使得用户对单个对象和组合对象的使用具有一致性。操作部分和操作整体的方法一样。原创 2021-06-08 17:08:08 · 387 阅读 · 0 评论 -
C# 设计模式-备忘录模式
备忘录模式:建立一个对象,保存需要存储的值,在需要复原的时候,赋值过来就可以了。 class Originator { public string State { get; set; } public Memento CreateMemento() { return new Memento(State); } public void SetMemento(Memento mement原创 2021-06-08 16:28:02 · 152 阅读 · 0 评论 -
C# 设计模式 观察者模式
核心就是在一个有某种状态的对象中维护一个list,将需要获取这个状态改变的其他对象添加到这个list中。当状态改变时,遍历这个list,通知所有list中的对象。原创 2021-06-08 15:46:03 · 99 阅读 · 0 评论 -
C# 设计模式 建造者模式
建造者模式:将一个复杂对象的构建和表示分离,使得同样的构建过程可以创建不同的表示建造者模式注重对象的创建,而模板模式注重执行的顺序 abstract class PersonBuilder { public abstract void BuildHead(); public abstract void BuildBody(); public abstract void BuildArmLeft(); public abs原创 2021-06-08 14:00:11 · 116 阅读 · 0 评论 -
C# 设计模式 原型模式
原型模式就是以原始对象为模板,创建出其他相同或相似内容的同一个类型的对象,然后再此基础上,修改成最终的想要的对象。原型模式可以使用浅拷贝,也可以使用深拷贝原创 2021-06-08 13:29:34 · 152 阅读 · 0 评论 -
设计模式-设计原则
设计原则:单一职责(SRP):一个类只负责一个功能领域的相应职责开闭原则(OPC):软件实体应对扩展开放,对修改关闭里式替换原则(LSP):所有父类出现的地方都能用子类替换依赖倒置原则(DIP):上层应用不应该依赖于下层实现,上层应用应该依赖于抽象,下层实现也应该依赖于抽象接口隔离原则(ISP):每个接口应该只关注当前的职责,而不应使用单一的总接口合成复用原则(CRP):尽...原创 2019-09-06 08:41:59 · 103 阅读 · 0 评论 -
C# 设计模式-代理模式
代理模式:为另一个对象提供一个替身或占位符以访问这个对象场景描述:我想要查我的档案记录,但是我不能直接去档案馆查,我只能通过警察局去查,此处警察局扮演的就是代理的角色 //档案记录 public abstract class Record { //查询 public abstract void Query(string name);...原创 2019-09-05 16:53:42 · 127 阅读 · 0 评论 -
C# 设计模式-模板模式
模板模式就是已经订好了一个框架,在这个框架里面有几个箱子,每次都是先去执行1号箱子的内容,再去执行2号箱子里面的内容,然后执行3号箱子里面的内容。。。我们无法改变箱子的执行顺序,只能去改变不同箱子里面的内容(当然,箱子里面原来的内容要是看着顺眼不改也行)。举例说明。烧菜都是包含一定顺序的:1.放油,2.放原料,3.加入调料,4.出锅代码:先定义一个模板public abstr...原创 2019-08-26 15:55:43 · 252 阅读 · 0 评论 -
C# 设计模式-迭代器模式
迭代器模式-提供一种方法顺序访问一个聚合对象中的各个元素,而有不暴露其内部的表示每一种数据结构(包括自定义)遍历自身内部的数据方式都是不同的,或者说我们希望以一种非常规的方式去遍历聚合对象。但是我们又希望使用时和常规的遍历方式一样调用,就如for和foreach一样遍历。想要以相同的方式遍历多种聚合对象,首先就要有一个相同的接口方法来统一获取,我们可以自定义,也可以使用C#自带的IEn...原创 2019-08-27 13:42:08 · 312 阅读 · 0 评论 -
C# 设计模式-策略模式
策略模式-定义了算法族,分别封装起来,让它们相互之间可以替换。对于客户的可能变化的行为采用组合的方式而非继承的方式。组合可以更加灵活的使用,而继承应对接口变化时太过繁琐。下面用代码说明:先定义一个抽象基类Car,所有实体车都要继承这个抽象基类 public abstract class Car { //能跑 public void R...原创 2019-08-28 11:32:41 · 193 阅读 · 0 评论 -
C# 设计模式-装饰器模式
装饰器模式,顾名思义就是对一个主体进行修饰。原理就是用一个新的类去包含一个旧的类,在新的类中先调用旧的类的方法,再调用新的类中新添加的方法。这样就实现了链式调用。然后可以不断的添加新的修饰类去修饰。为了能使新的类(装饰类)能够包含旧的类(主体类或者已经经过修饰的修饰类),就需要统一基类,所以不论是主体类还是修饰类都需要继承同一个基类。用代码来举例:1.定义2个主体类,Man和...原创 2019-08-22 13:34:46 · 861 阅读 · 0 评论 -
C# 设计模式-工厂模式(3种)
工厂模式最主要目的就是将类的创建和使用分开来,解耦。简单工厂模式:将类的创建抽离出来工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体的类简单工厂模式1.定义一个产品抽象类,各个产品实例都需要继承该类。2.定义一个工厂,通过参数type来决定实例化哪一个产品实例3.定义...原创 2019-09-03 13:58:59 · 1132 阅读 · 0 评论 -
C# 设计模式-单例模式
单例模式:确保一个类只有一个实例,并能够提供一个全局访问点线程不安全 public class Singleton { private static Singleton _singletonInstance; private Singleton() { } public static Si...原创 2019-09-04 10:06:10 · 94 阅读 · 0 评论 -
C# 设计模式-命令模式
命令模式:将每一个方法都封装成一种命令,调用只需要调用固定的接口就可以,而不需要调用原来的方法。先定义实体类 public class Light { public Light(string name) { Name = name; } string Name { get; set; ...原创 2019-09-04 10:53:12 · 127 阅读 · 0 评论 -
C# 设计模式-外观模式
外观模式就是将一个互相耦合严重的系统分成2块。一块仍旧是耦合严重,但是会暴露出一个统一的接口。而另一块只与暴露的统一接口联系,降低了耦合。将原本依赖于一个复杂系统的上层应用变成依赖于一个统一的接口,但正如上面所说,这个接口的外部看起来是和很美好的,内部任然是混乱的。下面看实际的例子:我们要看一部电影,我们就得通过遥控器来控制我们的电视和DVD控制我们的说有操作,所以看起来是这个...原创 2019-09-04 11:26:11 · 100 阅读 · 0 评论 -
C# 设计模式-状态模式
状态模式-允许对象在内部状态改变时改变他的行为,对象看起来好像修改了他的类。状态模式分为2个部分,一个部分是状态,一个部分是动作。状态是唯一的,某一时刻只能处于一种状态。任何状态都可以执行相同的方法,当然处在不同的状态执行相同的动作结果可能一样也可能不一样。先看一张图状态:1,2,3,4动作:上下左右当处在状态1时,可以按上下左右4个键,但是只有右和下可以正确运行,并将...原创 2019-09-05 15:01:18 · 337 阅读 · 2 评论 -
C# 设计模式-适配器模式
适配器模式就是将2个物理上没有关系(不存在继承,或者存在同一个父类)的对象连接起来。但是这2个对象逻辑上又是存在一定关联的,包含的方法的都一样。class A{ public void Fun1(); public void Fun2();}class B{ public void Fun1(); public void Fun2();}上述A,...原创 2019-08-26 15:11:26 · 182 阅读 · 0 评论