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

上一篇 / 下一篇  2010-05-08 19:03:11 / 个人分类:设计模式

一、模板方法模式简介(Brief Introduction

模板方法模式(Template Method Pattern),定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可以重定义算法的某些特定步骤。模板方法模式把不变行为搬移到超类,从而去除子类中的重复代码,实际上模板方法模式就是提供了一个代码复用平台。51Testing软件测试网n7R;t#tWk g

二、解决的问题(What To Solve

       要完成在某一细节上层次一致的一个过程或一系列步骤,但个别步骤在更详细的层次上实现不同时,可以使用模版方法模式解决问题。

1R3y8i+M!n?5vz0

三、模板方法模式分析(Analysis

1、模板方法模式结构

51Testing软件测试网i2Qe2K5\X]E

抽象类AbstractClass,实现了一个模版方法,定义了一个算法框架,具体子类将重新定义PrimitiveOperation1PrimitiveOperation1以实现一个算法的步骤。51Testing软件测试网0E!u[ q|

子类ConcreteClassAConcreteClassB,实现PrimitiveOperation1PrimitiveOperation1以完成算法中与特定子类相关的步骤。51Testing软件测试网 AeA Y}}L

2、模板方法模式代码

1、抽象模板类AbstractClass及其模板方法TemplateMethod()51Testing软件测试网cS%jw*?y.YJE

public abstract class AbstractClass51Testing软件测试网;Q Sw]"|B h2W5BO

{

o]QvHph0

    public abstract void PrimitiveOperation1();

M R Ni*a3[/Od0

    public abstract void PrimitiveOperation2();51Testing软件测试网o&k+?zr0B2vk

 

X3l)n:o{/mF0

    public void TemplateMethod()

'TV2Cu+|G.j;^'wE0

    {

&MSwltf.C6BR0

        PrimitiveOperation1();51Testing软件测试网$KWHy2?s/T V

        PrimitiveOperation2();

d| l8B/B*r9d#Z p)C0

        Console.WriteLine("模板方法执行完");

R-fw_ K:u']@-xM0

    }

5?U `8r }e0

}

-SL p/~(O5k0

 

u-sB~9y{G8E0

2、子类ConcreteClassAConcreteClassB实现父类定义的抽象方法

I;WC!UV*S0

public class ConcreteClassA:AbstractClass

Hf0N @z!Zk db0

{

lR-p1A2EA5Q0

    public override void PrimitiveOperation1()

(V)D$B7c#?5U.tO0

    {51Testing软件测试网SCYt-B3o0u JU ?3@

        Console.WriteLine("具体实现类{0}方法1实现",this.GetType().Name);51Testing软件测试网&CF,aP xn@e

    }51Testing软件测试网d&cnN e@4pD]7T2D

 51Testing软件测试网C3e]9V5[X7Rk

    public override void PrimitiveOperation2()51Testing软件测试网/BG!M!wR

    {51Testing软件测试网W ^)_ x7EuB1X q2H

        Console.WriteLine("具体实现类{0}方法2

qjb0`1w [_0

0n o{O ZLU`4G051Testing软件测试网)a,WPa+T


TAG:

 

评分:0

我来说两句

Open Toolbar