您的位置:首页 > 其它

模板方法模式

2015-08-30 22:08 239 查看
模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。

abstract class abstarctclass

{

final void templateMethod()//这就是模板方法,声明为final 以免子类改变算法的顺序

{

operation1();

operation2();

concreateoperation();

}

abstract void operation1();//这两个抽象方法子类必须实现

abstract void operation2();

final void concreateoperation(){}//这个具体的方法定义在抽象类中,声明为final,这样子类无法覆盖它,它可以被模板方法直接使用或者被子类使用

void hook(){}//这是钩子,有子类选择是否覆盖

}

上面的抽象方法子类必须覆盖,那么方法的具体实现跑到了子类那里去了。

对于钩子的用途:

1.让算法与钩子挂钩。

如 钩子:

boolean hook()

{

return true;

}

模板方法:

final void templateMethod()

{

operation1();

operation2()

if(hook())

{

concreateoperation();

}

}

子类可以选择覆盖该方法返回想要的操作,否则就是默认的操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: