您的位置:首页 > 其它

面向对象设计模式之TemplateMethod模板方法(行为型)

2013-10-06 16:36 721 查看
动机:在软件构建过程中,对于某一项任务,他常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架与应用之间的关系)而无法和任务的整体结构同时实现;如何在确定稳定操作结构的前提下,来灵活应对各种子步骤的变化或者晚期实现需求?

意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod是的子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

适用性:

1、一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。

2、各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。这是O p d y k e 和J o h n s o n 所描述过的“重分解以一般化”的一个很好的例子[ O J 9 3 ]。首先识别现有代码中的不同之处,并且将不同之处分离为新的操作。最后,用一个调用这些新的操作的模板方法来替换这些不同的代码。

3、控制子类扩展。模板方法只在特定点调用“h o o k ”操作,这样就只允许在这些点进行扩展。

UML图解:

//具体汽车厂商汽车测试程序程序开发组——晚开发
namespace TemplateMethod
{
public class DaZhongCar:Vehicle
{
protected override void Startup()
{
//...
}

protected override void Run()
{
//...
}

protected override void Turn()
{
//...
}

protected override void Stop()
{
//...
}
}
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐