设计模式笔记
xufei96
SDET .net C#
展开
-
模版方法模式(TemplateMethod)
理解:个人觉得这算不上个模式,通过继承减少代码间的重复。UML类图:代码实现: abstract class Person { public string Name { get; set; } public abstract void GetProfession(); } public class Teac原创 2010-03-24 18:05:00 · 219 阅读 · 0 评论 -
工厂方法模式
UML类图代码实现 public abstract class Animal { public abstract void Run(); } public class Dog : Animal { public override void Run() { Console.Wr原创 2010-03-24 16:03:00 · 198 阅读 · 0 评论 -
适配器模式(Adapter)
UML类图:代码实现: class BaseAPI { public string StringValue { get; set; } public void Execute() { Console.WriteLine(StringValue); } } interf原创 2010-03-25 16:28:00 · 220 阅读 · 0 评论 -
备忘录模式(Memento)
个人理解:核心是Memento类,定义了一个要保存的类的实例字段UML类图代码实现 class Subject { public string Str { get; set; } public Memento CreateMemento() { return new Memento(原创 2010-03-26 10:20:00 · 229 阅读 · 0 评论 -
桥接模式(Bridge)
个人理解:桥接模式的精髓在于维护一个抽象对象,并抽取这个对象的抽象部分。UML类图:代码实现: public interface IComponent { void Operation(); } public class ComponentA : IComponent { public void O原创 2010-03-26 14:51:00 · 267 阅读 · 0 评论 -
组合模式(Composite)
UML类图代码实现: public abstract class Document { public string Name { get; set; } public abstract void Add(Document document); public abstract void Remove(Document do原创 2010-03-26 13:56:00 · 234 阅读 · 0 评论 -
观察者模式(Observer)
个人理解:观察者模式的核心是Subject的Attach和Detach方法,加载Observer对象UML类图:代码实现: public abstract class Subject { protected List observers=new List(); public void Attach(Observer obs原创 2010-03-25 14:04:00 · 235 阅读 · 0 评论 -
享元模式(Flyweight)
个人理解享元模式的精髓在于一个Factory管理所有的Component类。UML类图代码实现 public abstract class Component { } public class ComponentA : Component { } public class ComponentB : Component { } pu原创 2010-03-29 13:22:00 · 245 阅读 · 0 评论 -
访问者模式(Visitor)
UML类图代码实现 public abstract class Visitor { public abstract void VisitComponentA(Component component); public abstract void VisitComponentB(Component component); }原创 2010-03-29 14:18:00 · 308 阅读 · 0 评论 -
责任链模式(Chain of Responsibility)
UML类图代码实现 public abstract class Component { protected Component handler; public void SetHandler(Component handler) { this.handler = handler; }原创 2010-03-26 16:40:00 · 240 阅读 · 0 评论 -
中介者模式(Mediaer)
个人理解:Sender是ComponentA与ComponentB之间的中介,ComponentA与Component维护一个Sender,SEnders也维护ComponentA与ComponentB。UML类图代码实现 public abstract class Sender { public abstract void Send(原创 2010-03-29 11:14:00 · 270 阅读 · 0 评论 -
装饰模式(Decorator)
个人理解:装饰模式的精髓在于装饰基类定义了一个装饰类基类类型的字段。UML类图代码实现:using System;namespace DecoratorMode{ class Program { static void Main(string[] args) { Hero hero原创 2010-03-24 11:04:00 · 248 阅读 · 0 评论 -
抽象工厂模式(Abstract Factory)
个人理解跟工厂方法思路几乎一样,只不过Factory能多create另外一种productUML类图代码实现 abstract class ProductA { } abstract class ProductB { } class ProductA_1 : ProductA { } class ProductA_2 : Produc原创 2010-03-25 15:04:00 · 253 阅读 · 0 评论 -
单例模式(Signleton)
UML类图代码实现: public class Component { public static Component ComponentInstance { get; private set; } private Component(){} static Component() {原创 2010-03-26 14:16:00 · 269 阅读 · 0 评论 -
解释器模式(interpreter)
UML类图代码实现 public class Context { public string Str { get; set; } } public abstract class Explainer { public abstract void Explain(Context context);原创 2010-03-29 13:40:00 · 259 阅读 · 0 评论 -
代理模式(Proxy)
UML类图代码示例 interface ICountry { void Create(); } class China : ICountry { public void Create() { Console.WriteLine("Create in China...");原创 2010-03-24 13:36:00 · 219 阅读 · 0 评论 -
策略模式(Strategy)
UML类图:代码示例: //策略类 public abstract class Animal { public abstract void Run(); } public class Dog : Animal { public override void Run() {原创 2013-04-07 14:37:31 · 653 阅读 · 0 评论 -
原型模式(Prototype)
理解:实际上就是定义了一个Clone方法用来初始化类并将类的值传给这个实例。UML类图 代码实现: abstract class Animal : ICloneable { public abstract object Clone(); } public class Dog : Animal { p原创 2010-03-24 17:30:00 · 210 阅读 · 0 评论 -
外观模式(Facade)
理解:集成一些内部的函数。UML类图:代码实现: public class ComponentAPIs { InnerAPI1 api1 = new InnerAPI1(); InnerAPI2 api2 = new InnerAPI2(); public void Action1() {原创 2010-03-25 10:51:00 · 224 阅读 · 0 评论 -
状态模式(State)
个人理解:核心是Context维护一个当前状态,并在Invoke状态方法时,将context维护的当前状态更新至下一状态UML类图:代码实现:using System;namespace DecoratorMode{ class Program { static void Main(string[] args)原创 2010-03-25 15:59:00 · 248 阅读 · 0 评论 -
简单工厂模式
UML类图:代码示例: //基类 public abstract class Animal { public string Name { get; set; } public abstract void Run(); } //子类1 public class Chicken : Animal原创 2013-04-07 13:25:11 · 622 阅读 · 0 评论 -
建造者模式(Builder)
个人理解:建造者模式与策略(stragety)模式比较类似,Director类有点类似于策略类,不同的是建造者模式会对Product分步建造完成。UML类图代码实现: public class Director { public Person BuildPerson(PersonBuilder personBuilder) {原创 2010-03-25 11:14:00 · 256 阅读 · 0 评论 -
迭代器模式(Iterator)
UML类图:代码实现: public interface Iterator { T GetCurrentItem(); T First(); T Next(); Boolean IsDone(); } public interface Aggregate { It原创 2010-03-26 13:58:00 · 268 阅读 · 0 评论 -
命令模式(Command)
个人理解:Invoker维护Command Command维护CommandTargetUML类图代码实现 public interface ICommand { void Execute(); } public class Invoker { private ICommand command;原创 2010-03-26 15:57:00 · 271 阅读 · 0 评论