Jackyfei
摘要: 1.什么是策略模式? 本质:面向借口编程。或者说策略模式是面向接口编程的最佳体现。 他抽象的是不同的算法,或者说策略。 比如税收,有个税和企业税。这是两种不同的算法,或者叫不同的策略。2.利用接口实现策略模式://业务简述:税收分国税,企业税,个人税等等,不同税算法不同。//策略模式本质就是面向接口编程,不同的算法可以理解为不同的策略//抽象税收算法public interface ITaxStrategy{ double Calculate(double income)}//个税public class ITaxPerson:ITaxStrategy{ public doubl... 阅读全文
posted @ 2014-03-24 15:26 张飞洪[厦门] 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 1.概念:将一个类的接口转换成客户希望的另外一个接口,使得原来由于接口不兼容不能一起工作的类可以一起工作。侧重接口转换。2.案例:姚明的翻译3.场景:复用旧类,但接口和复用环境不一致。 缺陷:有亡羊补牢之举,一般用在后期维护,前期发现接口不一致,一般重构统一接口,但是:当开发中调用第三方接口,第三方和我们自己的接口不一致,我们没有必要迎合他而改变自己接口。4.类图: Target为客户所期待的类5.Code//旧类的接口public class Adaptee{ public voidSpecialRequest() { Console.Write("SpecialRequ... 阅读全文
posted @ 2014-03-24 15:16 张飞洪[厦门] 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 1.概念:将一个复杂对象的构建和他的表示分离,使得同样的构件可以创建不同的表示。2.实例:肯德基和中餐,肯德基抽象了整个做菜的复杂过程(相同的构建),然后在不同的店铺进行实现(不同的表示)。中餐往往做菜是没有统一的过程的。3.类图: 4.Code public abstract class PersonBuilder { protected Graphics g; protected Pen p; public PersonBuilder(Graphics g,Pen p) { this.g=g; this.p=p; }... 阅读全文
posted @ 2014-03-24 15:13 张飞洪[厦门] 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 1.概念:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变算法的结构即可重新定义该算法的某些特定步骤。2.模板方法的特点: 当代码环境中,子类们的行为方法存在重复,通过抽取封装不变的行为到父类,从而去除子类重复代码,代码因重复利用变得简洁。 模板方法非常简单,其核心是利用了继承机制,AbstractClass是一个抽象模板,包括基本方法和模板方法。其中基本方法是一个已经实现的虚方法,模板方法是具体的方法,他们构成了顶级的逻辑骨架。而逻辑的具体操作延迟到具体的子类ConcreteClass来实现。代码示例:public class TestPaper {... 阅读全文
posted @ 2014-03-24 15:12 张飞洪[厦门] 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 通过复制产生一个对象,而不是通过new产生。这种复制是内存二进制流的拷贝,性能比new好很多。缺点也是优点是:构造函数是不会执行,减少构造函数的约束。浅拷贝共享深拷贝创建副本(不共享)改变新对象属性或字段不影响原型对象如果我们我们只需要原型对象中的属性不引用其他数据信息,可以使用浅拷贝;如果我们需要原型对象中所有的信息,包括引用的数据信息,可以使用深拷贝public class Mail : ParentMail,ICloneable{ public Mail() { _Text = new Test(); } public string Receiver{ get; set;... 阅读全文
posted @ 2014-03-24 15:09 张飞洪[厦门] 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 简单工厂简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。不修改代码的话,是无法扩展的。工厂方法工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。在同一等级结构中,支持增加任意产品。抽象工厂抽象工厂是应对产品族概念的。比如说,每个汽车公司可能要同时生产轿车,货车,客车,那么每一个工厂都要有创建轿车,货车和客车的方法。应对产品族概念而生,增加新的产品线很容易,但是无法增加新的产品。小结★工厂模式中,重要的是工厂类,而不是产品类。产品类可以是多种形式,多层继承或者是单个类都是可以的。但要明确的,工厂模式的接口只会返回一种类型的实例,这是 阅读全文
posted @ 2014-03-24 15:02 张飞洪[厦门] 阅读(402) 评论(0) 推荐(0) 编辑
摘要: 1.概念:提供一个创建一系列相关对象的接口,而无需指定具体的类。用简单工厂改进抽象工厂实例:public class DataAccess{ private const readonly string dbstr="MSSQL"; public static IUser CreateUser() { IUser user = null; switch (dbstr) { case "MSSQL": user = new SqlServerUser(); //这里的实例化是写死在程序里面 break; case "OR... 阅读全文
posted @ 2014-03-24 15:00 张飞洪[厦门] 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 1.简单工厂模式 对象的集中管理,是把对象放在工厂类当中,那么如何避免工厂类重复new操作? a.通过构造函数进行注入。 b.设置工厂类为Singleton模式或者使用static方式。static更像API的集合,因为他不能被继承,Singleton更像面向对象。 客户端调用: OperationFactory factory=new OperationFactory(); IOperation oper= factory.CreateOperation("+"); //或枚举 OperEnum.A oper.NumA = 1; oper.NumB = 2; ... 阅读全文
posted @ 2014-03-24 14:59 张飞洪[厦门] 阅读(499) 评论(0) 推荐(0) 编辑
摘要: 一、创建型模式[静态] 1.1单件模式 1.2工厂方法模式 1.3抽象工厂模式 1.4模板方法模式 1.5建造者模式(生成器模式) 1.6原型模式 二、结构型模式[静态] 描述类和对象之间的组合继承 2.1适配器模式 2.2桥接模式 2.3装饰模式 2.4组合模式 2.5Facade模式 2.6享元(Flyweight)模式 2.7代理模式三、行为型模式[动态] 涉及到算法,对象间的职责分配。 描述到类和对象之间通信和交互。 行为类模式 行为对象模式 3.1责任链 3.2命令模式 3.3解释器模式 3.4迭代器模式 3.5中介者模式 ... 阅读全文
posted @ 2014-03-24 14:57 张飞洪[厦门] 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 1.定义: 某一个类只有一个实例,并且这个实例是在类内部进行实例化,并向整个系统提供该实例。 2.单例模式的通用代码: public sealed class Singleton { private static sealed Singleton _singleton = new Singleton 阅读全文
posted @ 2014-03-24 14:56 张飞洪[厦门] 阅读(3743) 评论(0) 推荐(1) 编辑