之前写过Python的设计模式,由于经常不使用Python,回过头来再看Python的设计模式,有时候感觉并不是那么的显而易见,所以使用c#重新将代码编写一遍,更加清晰明了。
这里借用原来的介绍,对模式做简要说明,模式简易说明和类图,请查看 http://www.cnblogs.com/cotton/category/606629.html
设计模式分为三种类型
-
创建型模式:简单工厂、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式
-
结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。
-
行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。
创建型模式
一、简单工厂模式
模式说明
简单工厂模式又称之为静态工厂方法,属于创建型模式。在简单工厂模式中,可以根据传递的参数不同,返回不同类的实例。简单工厂模式定义了一个类,这个类专门用于创建其他类的实例,这些被创建的类都有一个共同的父类。
模式结构图
代码示例
namespace DesignPattern { public class SimpleFactory { public static Operation GetOperation(op op, double a, double b) { switch (op) { case op.add: return new Add(a, b); case op.sub: return new Sub(a, b); case op.mul: return new Mul(a, b); case op.div: return new Div(a, b); default: return new undef(a, b); } } } public enum op { add = '+', sub = '-', mul = '*', div = '/' } public abstract class Operation { public double a, b; public Operation(double a, double b) { this.a = a; this.b = b; } public abstract double GetResult(); } public class Add : Operation { public Add(double a, double b) : base(a, b) { } public override double GetResult() { return a + b; } } public class Sub : Operation { public Sub(double a, double b) : base(a, b) { } public override double GetResult() { return a - b; } } public class Mul : Operation { public Mul(double a, double b) : base(a, b) { } public override double GetResult() { return a * b; } } public class Div : Operation { public Div(double a, double b) : base(a, b) { } public override double GetResult() { try { return a / b; } catch (DivideByZeroException e) { throw e; } } } public class undef : Operation { public undef(double a, double b) : base(a, b) { } public override double GetResult() { throw new NotImplementedException(); } } }