随笔分类 - 设计模式
摘要:使用中介模式,大家通过往中介发消息,和从中介接受消息。从而避免了多个端之间的耦合。就像你看房,你不需要联系各个房东,你只需要联系中介,由中介去联系各个房东和各个租客。 abstract class Mediator { public abstract void Send(string message
阅读全文
摘要:graph LR client--调用-->Handler ConcreteHandlerA--继承-->Handler ConcreteHandlerB--继承-->Handler Handler--引用-->Handler 当 Handler 处理请求时,可以选择自己处理或调用继任者处理该请求。
阅读全文
摘要:/// <summary> /// 烧烤的人 /// </summary> class Barbecuer { public void Meat() { Console.WriteLine("bbq meat"); } public void Vegetable() { Console.WriteL
阅读全文
摘要:// 硬件抽象类 abstract class HandsetBrand { // 硬件上安装的软件列表 protected IList<HandsetSoftware> _softwareList = new List<HandsetSoftware>(); public void AddSoft
阅读全文
摘要:class STWindow { static Window win; private STWindow() { } public static Window GetInstance() { if (win == null || !win.IsVisible) { win = new Window(
阅读全文
摘要:abstract class Component { protected string name; public Component(string name) { this.name = name; } public abstract void Add(Component c); public ab
阅读全文
摘要:打游戏的时候,存档; 场景:保存某个时刻的状态,一般用于针对的保存部分属性,如果是所有,直接调用 Clone 即可。 graph LR 角色Originator-->存档Memento 管理存档CareTaker-->存档Memento /// <summary> /// 角色类 /// </sum
阅读全文
摘要:1.适配器 graph LR id1(OracleUser)--继承-->id2(SqlUser) id3(MysqlUser)--继承-->id2(SqlUser) id4(Client)--调用-->id5(Adapt) id5(Adapt)--关联-->id2(SqlUser) style i
阅读全文
摘要:已有的双方无法很好的配合起来时,通过适配器,打通两者的联系。 class Target { public virtual void Request() { Console.WriteLine("普通请求"); } } class Adaptee { public void SpecificReque
阅读全文
摘要:abstract class State { public abstract void WriteProgram(Work w); } class ForenoonState : State { public override void WriteProgram(Work w) { if (w.Ho
阅读全文
摘要:class User { int _id; public int Id { get { return _id; } set { _id = value; } } string _name; public string Name { get { return _name; } set { _name
阅读全文
摘要:/// <summary> /// 抽象观察者接口 /// </summary> interface Observer { void Update(); } /// <summary> /// 具体观察者 /// </summary> class ConcreteObserver : Observe
阅读全文
摘要:假设你是个木工手艺人,会做各种高矮胖瘦的人物,现在让你做一个男生和女生。 class Person { Ilist<string> parts = new List<string>(); public void Add(string part) { parts.Add(part); } public
阅读全文
摘要:比如开一台设备需要按顺序给显示器通电、亮灯、发出声音。 在使用外观模式前,客户端直接调用通电、亮灯、发出声音。 在这样的情况下,后续如果流程发生变化,比如不需要发出声音或声音需要在亮灯之前,就需要修改客户端的代码,如果客户端多处调用,就需要修改多处。 public class SubSystemOn
阅读全文
摘要:父类定好模板,不同的子类只需要往里面填个性化的内容。就像一张卷子,不同的考生往里面填各自的答案。 public class TestPaper { public void Question1() { Console.WriteLine("This is Question1:"); Console.W
阅读全文
摘要:目的:当需要多次实例化同一个对象时,可以通过 Clone 已有对象的方式避免多次实例化,从而节约性能。 1. 雏形 /// <summary> /// 抽象原型类 /// </summary> public abstract class Prototype { public abstract Pro
阅读全文
摘要:前面讲到的简单工厂如下面这段代码,后续需要拓展功能时,需要在简单工厂里面添加 case ,这依旧违反了开放-封闭中的对修改关闭的原则。 // 工厂生成对象类 public class OperationFactory { public static OperationClass GetOperati
阅读全文
摘要:// 送礼物:红包、花、巧克力 public interface GiveGift { void GiveDolls(); void GiveFlowers(); void GiveChocolate(); } // 送礼物的人 public class Pursuit : GiveGift { /
阅读全文
摘要:装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。 public class Person { public string Name { get; set; } public Person() { } public Person(string name) { Name = n
阅读全文
摘要:// 结账基类 public abstract class CashSuper { public abstract double acceptCash(double money); } // 正常模式 public class CashNomal : CashSuper { public overr
阅读全文

浙公网安备 33010602011771号