摘要:
1.概念:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变算法的结构即可重新定义该算法的某些特定步骤。2.模板方法的特点: 当代码环境中,子类们的行为方法存在重复,通过抽取封装不变的行为到父类,从而去除子类重复代码,代码因重复利用变得简洁。 模板方法非常简单,其核心是利用了继承机制,AbstractClass是一个抽象模板,包括基本方法和模板方法。其中基本方法是一个已经实现的虚方法,模板方法是具体的方法,他们构成了顶级的逻辑骨架。而逻辑的具体操作延迟到具体的子类ConcreteClass来实现。代码示例:public class TestPaper {... 阅读全文
摘要:
通过复制产生一个对象,而不是通过new产生。这种复制是内存二进制流的拷贝,性能比new好很多。缺点也是优点是:构造函数是不会执行,减少构造函数的约束。浅拷贝共享深拷贝创建副本(不共享)改变新对象属性或字段不影响原型对象如果我们我们只需要原型对象中的属性不引用其他数据信息,可以使用浅拷贝;如果我们需要原型对象中所有的信息,包括引用的数据信息,可以使用深拷贝public class Mail : ParentMail,ICloneable{ public Mail() { _Text = new Test(); } public string Receiver{ get; set;... 阅读全文
摘要:
简单工厂简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。不修改代码的话,是无法扩展的。工厂方法工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。在同一等级结构中,支持增加任意产品。抽象工厂抽象工厂是应对产品族概念的。比如说,每个汽车公司可能要同时生产轿车,货车,客车,那么每一个工厂都要有创建轿车,货车和客车的方法。应对产品族概念而生,增加新的产品线很容易,但是无法增加新的产品。小结★工厂模式中,重要的是工厂类,而不是产品类。产品类可以是多种形式,多层继承或者是单个类都是可以的。但要明确的,工厂模式的接口只会返回一种类型的实例,这是 阅读全文
摘要:
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... 阅读全文
摘要:
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; ... 阅读全文
摘要:
一、创建型模式[静态] 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中介者模式 ... 阅读全文
摘要:
1.定义: 某一个类只有一个实例,并且这个实例是在类内部进行实例化,并向整个系统提供该实例。 2.单例模式的通用代码: public sealed class Singleton { private static sealed Singleton _singleton = new Singleton 阅读全文