码迷,mamicode.com
首页 > 其他好文 > 详细

论模板方法设计模式

时间:2015-01-29 10:27:51      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">      今天有点空闲,咱们来谈谈在设计模式中,相对简单的模板方法设计模块;其实我们经常在.net 或者Java里面用电,架构会把一些公共行为提取后放到抽象类中,我们在实际使用的时候,只需继续并修改变动的部分代码就实现我们想要的功能。</span>

      先看看如何定义:定义一个操作中的算法骨架,而将一些步骤延迟到子类实现。这样使得子类在不变动一个算法的结构上即可重新定义某些特定的步骤。 很简单吧,简单点说,就是讲不需要变动的部分放到基类中,将变动的部分放到子类进行重新方法实现。

技术分享

    代码区:

AbstractClass类是基类,只定义具体的算法过程,而实现延迟到子类中。

    

abstract class AbstractClass
{
	public abstract void PrimitiveOperation1();
	public abstract void PrimitiveOperation2();
	//主框架结构只给出具体的抽象步骤,实现则延迟到子类
	public void TemplateMethod()
	{
		//对应的主算法框架结构
		PrimitiveOperation1();
		PrimitiveOperation2();
	}
}
ConcreteClassA 类实现特殊步骤的方法;

class ConcreteClassA:AbstractClass
{
 public override void PrimitiveOperation1()
 {
	Console.WriteLine(" PrimitiveOperation1 A");
 }
 public override void PrimitiveOperation2()
 {
	Console.WriteLine(" PrimitiveOperation2 A");
 }
}

ConcreteClassB 类代码

class ConcreteClassB:AbstractClass
{
 public override void PrimitiveOperation1()
 {
	Console.WriteLine(" PrimitiveOperation1 B");
 }
 public override void PrimitiveOperation2()
 {
	Console.WriteLine(" PrimitiveOperation2 B");
 }
}

客户端代码:

static void Main(String[] arg)
{
	AbstractClass c;
	//具体的模板A
	c=new ConcreteClassA();
	c.TemplateMethod();
	
	c=new ConcreteClassB();
	c.TemplateMethod();
	
}





论模板方法设计模式

标签:

原文地址:http://blog.csdn.net/sevenkj/article/details/43267231

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!