C#模板方法模式

模板方法模式是通过把不变行为搬移到超类,而超类一定会定义为虚类虚方法,虚方法在每个子类中重写,去除子类中的重复代码来体现它的优势。

通用模式样例代码为:

 1 /*
 2  * Created by SharpDevelop.
 3  * User: home
 4  * Date: 2013/4/24
 5  * Time: 21:42
 6  *
 7  * To change this template use Tools | Options | Coding | Edit Standard Headers.
 8  */
 9 using System;
10
11 namespace template
12 {
13     abstract class AbstractClass
14     {
15         public abstract void PrimitiveOperation1();
16         public abstract void PrimitiveOperation2();
17
18         public void TemplateMethod()
19         {
20             PrimitiveOperation1();
21             PrimitiveOperation2();
22             Console.WriteLine("");
23         }
24     }
25
26     class ConcreteClassA : AbstractClass
27     {
28         public override void PrimitiveOperation1()
29         {
30             Console.WriteLine("具体类A方法1实现。");
31         }
32         public override void PrimitiveOperation2()
33         {
34             Console.WriteLine("具体类A方法2实现。");
35         }
36     }
37
38     class ConcreteClassB : AbstractClass
39     {
40         public override void PrimitiveOperation1()
41         {
42             Console.WriteLine("具体类B方法1实现。");
43         }
44         public override void PrimitiveOperation2()
45         {
46             Console.WriteLine("具体类B方法2实现。");
47         }
48     }
49
50     class Program
51     {
52         public static void Main(string[] args)
53         {
54             AbstractClass c;
55
56             c = new ConcreteClassA();
57             c.TemplateMethod();
58
59             c = new ConcreteClassB();
60             c.TemplateMethod();
61
62             Console.Read();
63         }
64     }
65 }

时间: 2024-10-28 04:10:36

C#模板方法模式的相关文章

javascript 之 模板方法模式

模板方法模式说明 定义:定义方法操作的骨架,把一些具体实现延伸到子类中去,使用得具体实现不会影响到骨架的行为步骤! 说明:模式方法模式是一个继承跟复用的典型模式,该模式定义了一个抽象类,Abstract Class,其下定义了一个或多个模板方法,也就是顶级方法,这些方法定义行为的调度步骤,一般是调用抽象中定义的其他具体类或勾子:定义了一些抽象方 法,这些方法必须要由具体子类来实现:还有可能定义了一些勾子方法,这一般是空方法,用于子类扩展. 模板方法模式组成: 1>. 模板方法: 也叫骨架方法,定

Template Method(模板方法)模式AS2实现

模板 Template   Method(模板方法)模式AS2实现 class AbstractClass{   private function AbstractClass()   {   }   // Methods   public function PrimitiveOperation1():Void   {   }   public function PrimitiveOperation2():Void   {   }   // The Template method   public

重温设计模式(七)——模板方法模式

1.摘要 在本文中,我们来对模板方法模式做一个全面的了解. 2.求职简讯 呵呵,如果各位不介意,希望在这里做一个求职的广告. 语言方向:Java/C#/VB,语言熟悉程度降序排列. 求职方向:开发,测试等与IT相关工作. 月薪要求:1000元以上 工作地点:北京 3.开门见山 模板方法,定义一个操作中算法骨架,而将一些步骤延迟到子类中去实现. 让我们先来看看模板方法的示意图: 这个模式的本身很容易理解,我就不自己去画了. 我们看到这个模式的关键在于父类中的TemplateMethod()方法,正

传统设计模式(八)模板方法模式

模板方法定义了一个算法的步骤,并允许子类为一个或多个步骤提供实现. 普通的设计算法由实现类直接控制,在很多功能类似的对象中存在重复.并且由于类的组织方式不具有弹性,所以往往新加入新的相似模块时需要作大量冗余的步骤. 我们还是那电商的订单提交来说事 ~ ~ /// <summary> /// 模板类 /// </summary> public abstract class OrderSubmit { public OrderSubmit() { //检查购物车 CheckCart()

hand first设计模式 -模板方法模式

模板方法模式 : 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变算法结构的情况下,重新算法.重新定义算法中的某些步骤. 咖啡因饮料超类 Java代码 /** * 咖啡因饮料超类 * @author panxiuyan * */ public abstract class CaffeinBeverage { /** * 制作方法 */ public void perareRecip() { boilWater(); brew(); pourInCup();

.Net设计模式实例之模板方法模式(Template Mothed Pattern)

一.模板方法模式简介(Brief Introduction) 模板方法模式(Template Method Pattern),定义一个操作中的算法骨架,而将一些步骤 延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可以重定义算法的某些特定 步骤.模板方法模式把不变行为搬移到超类,从而去除子类中的重复代码,实际上模板方法 模式就是提供了一个代码复用平台. 二.解决的问题(What To Solve) 要完成在某一细节上层次一致的一个过程或一系列步骤,但个别步骤在更详细的层次上 实现不同时,

设计模式 ( 十九 ) 模板方法模式Template method(类行为型)

设计模式 ( 十九 ) 模板方法模式Template method(类行为型) 1.概述 在面向对象开发过程中,通常我们会遇到这样的一个问题:我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序.但是某些步骤的具体实现是未知的,或者说某些步骤的实现与具体的环境相关. 例子1:银行业务办理流程 在银行办理业务时,一般都包含几个基本固定步骤: 取号排队->办理具体业务->对银行工作人员进行评分. 取号取号排队和对银行工作人员进行评分业务逻辑是一样的.但是办理具体业务是个不相同的,具体业务可能

【设计模式】模板方法模式

[什么是设计模式]     官方解释:定义一个操作中算法的框架,而将一些步骤延迟到子类中.模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 设计模式大咖闫宏解释:模板方法模式是类的行为型模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现.这就是模板方法模式的用意. [模板类图] 可以看出,模板方法模式由两部分组成:       (1

模板方法模式----设计模式系列

模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定的步骤.          定义有些呆板,说说我的理解吧.父类定义实施的步骤,子类中实现具体的算法.当我们要完成在某一细节层次一直得一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,通常考虑用模板方法木事来处理. 代码很简单的不要不要的,还有注释.直接贴啦. (1)定义抽象模板父类 /** * 抽象模板,定义并实现了一个模板方法.这个模板方法一般