设计模式
吴俊荣
我是一个非常非常懒的人
展开
-
设计模式——访问者模式
设计模式——访问者模式 访问者模式,表示作用对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作 //为该对象结构中ConcreteElement的每一个类声明一个Visit操作 abstract class Visitor { public abstract void VisitorConcreteElementA(ConcreteElementA concreteElementA); public abstract原创 2020-12-23 11:00:43 · 61 阅读 · 0 评论 -
设计模式——解释器模式
设计模式——解释器模式 解释器模式,给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子 //AbstractExpression(抽象表达式),声明一个抽象的解释操作,这个接口为抽象语法树中所有的节点所共享 abstract class AbstractExpression { public abstract void Interpret(Context context); } //TerminalExpress原创 2020-12-23 10:50:31 · 79 阅读 · 0 评论 -
设计模式——享元模式
设计模式——享元模式 享元模式,运用共享技术有效地支持大量细粒度的对象 //Flyweight类,它是所有具体共享类的超类或者接口,通过这个接口,Flyweight可以接受并作用于外部状态 abstract class Flyweight { public abstract void Operation(int extrinsicstate); } //ConcreteFlyweight 是继承Flyweight超类或实现Flyweight接口,原创 2020-12-23 10:43:06 · 136 阅读 · 0 评论 -
设计模式——中介者模式
设计模式——中介者模式 中介模式,用一个中介对象来封装一系列的对象交互。中介使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变他妈之间的交互 //抽象中介类 abstract class Mediator { public abstract void Send(string message, Colleague colleague);//定义一个抽象的发送消息方法,得到同事对象和发送消息 } //具体中介者类 class Conc原创 2020-12-23 10:27:40 · 60 阅读 · 0 评论 -
设计模式——职责链模式
设计模式——职责链模式 职责链模式,使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这个对象连成一条链,并沿着这条链该请求,直到有一个对象处理它为止 //Handler类,定义一个处理请示的接口 abstract class Handler { protected Handler successor; public void SetSuccessor(Handler successor)//设置继任者 {原创 2020-12-23 10:02:51 · 80 阅读 · 0 评论 -
设计模式——命令模式
设计模式——命令模式 命令模式,将一个请求封装为一个对象,从而使你可用不同的请求对客户端进行参数化,对请求排队或者请求日志,以及支持可撤销的操作 //Command类,用来声明执行操作的接口 abstract class Command { protected Receiver receiver; public Command(Receiver receiver) { this.receiver = receiver原创 2020-12-23 09:53:04 · 86 阅读 · 0 评论 -
设计模式——桥接模式
设计模式——桥接模式 桥接模式 将抽象与它实现部分分离,使它们都可以独立地变化 abstract class Implementor { public abstract void Operation(); } class ConcreteImplementorA : Implementor { public override void Operation() { Console.WriteLine("原创 2020-12-23 09:46:21 · 71 阅读 · 0 评论 -
设计模式——单例模式
设计模式——单例模式 单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点 //普通单例 class Singleton { private static Singleton instance; private Singleton() //构造方法让其private,这就堵死了外界利用new创建此类实例的可能了 { } public static Singleton GetInstance原创 2020-12-22 18:19:06 · 54 阅读 · 0 评论 -
设计模式——组合模式
设计模式——组合模式 组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具体一致性 //Component为组合中的对象声明接口,在适当情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component的子部件 abstract class Component { protected string name; public Component(string name)原创 2020-12-22 17:41:37 · 65 阅读 · 0 评论 -
设计模式——备忘录模式
设计模式——备忘录模式 备忘录:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态 //发起者 class Originator { private string state; public string State { get { return state; } set { state = value; }原创 2020-12-22 16:54:46 · 54 阅读 · 0 评论 -
设计模式——适配器模式
设计模式——适配器模式 适配器模式,将一个类的接口装换成客户希望的另外一个接口。 Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 //这是客户所期待的接口。目标可以是具体的活抽象的类 class Tartget { public virtual void Request() { Console.WriteLine("普通请求"); } } //需要适配的类原创 2020-12-22 13:24:59 · 61 阅读 · 0 评论 -
设计模式——状态模式
设计模式——状态模式 状态模式(State),当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。、 abstract class State { public abstract void Handle(Context context); } class ConcreteStateA : State { public override void Handle(Context context)//设置Concret原创 2020-12-21 15:22:26 · 64 阅读 · 0 评论 -
设计模式——抽象工厂模式
设计模式——抽象工厂模式 抽象工厂模式,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类 /// <summary> /// 联想15抽象类 /// </summary> public abstract class Lenovo15 { public abstract void SayHello(); } /// <summary> /// 联想16抽象类 /// &l原创 2020-12-21 14:23:39 · 77 阅读 · 1 评论 -
设计模式——观察者模式
设计模式——观察者模式 观察者模式 定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己 ///看股票的同事 class StockObserver { private string name; private Subject sub; public StockObserver(string name, Subject sub) {原创 2020-12-18 16:52:36 · 176 阅读 · 1 评论 -
设计模式——建造者模式
设计模式——建造者模式 //建造者模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 /// <summary> /// 小王和小李难道会自愿地去组装嘛,谁不想休息的,这必须有一个人叫他们去组装才会去的 /// 这个人当然就是老板了,也就是建造者模式中的指挥者 /// 指挥创建过程类 /// </summary> public class Director { // 组装电脑原创 2020-12-18 16:36:29 · 59 阅读 · 2 评论 -
设计模式——外观模式
设计模式——外观模式 外观模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用 class SubSystemOne { public void MethodOne() { Console.WriteLine("子系统方法一"); } } class SubSystemTwo { public void MethodTwo()原创 2020-12-18 16:15:12 · 68 阅读 · 1 评论 -
设计模式——模板方法模式
设计模式——模板方法模式 模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 模板方法使得子类可以不改变一个算法的结构可重定义该算法的某些特定步骤 abstract class AbstractClass { public abstract void PrimitiveOperation1(); public abstract void PrimitiveOperation2(); public void TemplateMe原创 2020-12-18 16:07:48 · 67 阅读 · 1 评论 -
设计模式——原型模式
设计模式——原型模式 原型模式(Prototype),其实就是从一个对象再创建另外一个可定制的对象,而且不需知道任何创建的细节。 abstract class Prototype { private string id; public Prototype(string id) { this.id = id; } public string Id {原创 2020-12-18 16:01:05 · 70 阅读 · 2 评论 -
设计模式——工厂方法模式
设计模式——工厂方法模式 //鼠标抽象类 public abstract class Mouse { public abstract void Print(); } //戴尔鼠标 public class DellMouse : Mouse { public override void Print() { Console.WriteLine("生产了一个Dell鼠标!");原创 2020-12-18 15:10:26 · 61 阅读 · 0 评论 -
设计模式——代理模式
设计模式——代理模式 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。 //Subject类,定义了RealSuject和Proxy的共用接口,这样就在任何使用RealSuject的地方都可以使用Proxy abstract class Subject { public abstract void Request(); } //RealSuject类,定义Proxy所代表的真实实体 class RealSuject : Su原创 2020-12-18 14:54:54 · 51 阅读 · 0 评论 -
设计模式——装饰模式
设计模式——装饰模式 装饰模式(Decorator),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活 abstract class Component { public abstract void Operation(); } class ConcreteComponent : Component { public override void Operation() {原创 2020-12-18 14:32:33 · 61 阅读 · 0 评论 -
设计模式——策略模式
设计模式——策略模式 策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户 //抽象算法类 abstract class Strategy { //算法方法 public abstract void AlgorithmInterface(); } //具体算法A class ConcreteStrategyA : Strategy {原创 2020-12-18 13:50:51 · 127 阅读 · 0 评论 -
设计模式——简单工厂模式
设计模式——简单工厂模式 /// <summary> /// 电脑 /// </summary> public abstract class Computer { /// <summary> /// 产品的抽象方法,由具体的产品类去实现 /// </summary> public abstract void start(); } ///原创 2020-12-18 13:32:59 · 71 阅读 · 0 评论