模板方法模式
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();
}
}
子类可以选择覆盖该方法返回想要的操作,否则就是默认的操作。
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();
}
}
子类可以选择覆盖该方法返回想要的操作,否则就是默认的操作。
相关文章推荐
- C#订阅模式
- CSS居中集合&图片视口最大化
- 万能的everything彻底解决mysql问题
- Entity Framework扩展库
- 20150830--随笔
- 好好学习中。。。。
- RESTful调用报错status code=415 Unsupported Media Type
- iOS:UIToolBar、toolbarItems、BarButtonItem的几种关系
- BZOJ 2510: 弱题( 矩阵快速幂 )
- C与C++中的const
- 乱码问题
- maven最齐全配置pom.xml
- Uva-699 - The Falling Leaves(二叉树与递归)
- JAVA问题总结之20--可变长度形参
- JVM内存结构解析_自动内存解析机制(二)
- java IO流文件的读写具体实例
- BGA256芯片植球全过程体验(原创)
- WebMagic开源垂直爬虫介绍
- 单链表的基本操作(2)
- UIday05:target/action设计模式 代理设计模式 UIImageView ⼿势识别器