模版方法模式

                                                模版方法模式

   模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式是非常简单而且几乎是无处不用,很少有人没有用过它。

类结构图

                                  

 

示列代码如下:

abstract class AbstractClass

{

     public abstract void MethodA();

     public abstract void MethodB();

      public void TemplateMethod()

     {

           primitiveOperation1();

           primitiveOperation2();

           Console.write("");

     }

}

 

public class ClassA : AbstractClass

{

   public override void MethodA()

   {

        Console.writeline("具体类a方法MethodA的实现");

    }

  

   public override void MethodB()

   {

        Console.writeline("具体类a方法MethodB的实现");

    }

}

 
public class ClassB : AbstractClass

{

   public override void MethodA()

   {

        Console.writeline("具体类B方法MethodA的实现");

    }

  

   public override void MethodB()

   {

        Console.writeline("具体类B方法MethodB的实现");

    }

}

//客户端调用

static void Main(string[] args)

{

       AbstractClass c;

       c = new ClassA();

       c.TemplateMethod();

         c = new ClassB();

       c.TemplateMethod();

}


可以看到类A和类B都有方法:MethodA和MethodB,但它们的实现是不一样的,所以将它们不变的结构抽象出来作为基类,子类可以重新定义实现的细节,这样就是模板方法模式

特点:

1.Template Method模式是一种非常基础性的设计模式,在面向对象系统中有着大量的应用。它用最简洁的机制(虚函数的多态性)为很多应用程序框架提供了灵活的扩展点,是代码复用方面的基本实现结构。

2.除了可以灵活应对子步骤的变化外,“不用调用我,让我来调用你”的反向控制结构是Template Method的典型应用。

3.在具体实现方面,被Template Method调用的虚方法可以具有实现,也可以没有任何实现(抽象方法,纯虚方法),但一般推荐将它们设置为protected方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值