设计模式——模版方法模式

来源:互联网 发布:ubuntu 17.04 u盘安装 编辑:程序博客网 时间:2024/06/05 04:11
转载请注明出处!
模版方法模式说明:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
模版方法模式就是提供了一个很好的代码复用平台,是通过把不变行为搬移到超类,去除子类的重复代码来体现它的优势。下面直接看此模式的简单模版代码:

//抽象模版,定义并实现一个模版方法 abstract class AbstractClass { //一些抽象行为,放到子类去实现 public abstract void PrimitiveOperation1(); public abstract void PrimitiveOperation2(); //模版方法,给出了逻辑的骨架,而逻辑的组成是一些相应的抽象操作,他们都推迟到子类中实现 public void TemplateMethod() { PrimitiveOperation1(); PrimitiveOperation2(); Console.WriteLine(""); } }

//以下是两个继承模版类的具体类,实现模版所定义的一个或多个抽象方法

//具体A类

class ConcreteClassA : AbstractClass { public override void PrimitiveOperation1() { Console.WriteLine("具体类A方法1实现"); } public override void PrimitiveOperation2() { Console.WriteLine("具体类A方法2实现"); } }

//具体B类

class ConcreteClassB : AbstractClass { public override void PrimitiveOperation1() { Console.WriteLine("具体类B方法1实现"); } public override void PrimitiveOperation2() { Console.WriteLine("具体类B方法2实现"); } }

//客户端代码 class MainProgram { void Main() { AbstractClass ac = null; ac = new ConcreteClassA(); ac.TemplateMethod(); ac = new ConcreteClassB(); ac.TemplateMethod(); Console.ReadKey(); } }

通过以上代码,很容易看出模版方法模式的好处,就是定义了一个顶级的骨架(框架),这个框架给出了具体的操作顺序,而每一步的操作内容延迟到子类去实现,那么当我们要修改某一步的操作时,只需要修改这步的子类方法即可,而不会影响到整个流程顺序。当不变的和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现。我们通过模版方法模式把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变行为的纠缠。
这里不举例说明了……因为很容易理解和扩展使用