• 111861

    文章

  • 803

    评论

  • 12

    友链

  • 最近新加了换肤功能,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

设计模式-模板方法模式

撸了今年阿里、腾讯和美团的面试,我有一个重要发现.......>>

模板设计模式

定义

模板设计模式就是在一个方法中定义一个算法的骨架, 而将一些步骤延迟到子类中. 这个方法叫做模板方法. 模板方法使得子类可以在不改变算法结构的情况下, 重新定义算法中的某些步骤.

对于模板设计模式,最重要的就是要理解模板方法, 模板方法将算法定义成一组步骤, 其中任何步骤都可以是抽象的, 由子类负责实现. 这样能够保证算法结构保持不变, 同时由子类提供部分实现.

详细描述

类图如下:

模板方法设计模式类图

其中templateMethod()就是模板方法, 而在模板方法中会使用primitiveOperation1()和primitiveOperation2()两个方法. 这两个方法会在不同的子类中有不同的实现. 具体代码如下:

abstract class AbstractClass {
	// 模板方法定义为final, 防止子类进行修改
	final void tempalteMethod() {
		primitiveOperation1();
		primitiveOperation2();
		concreteOperation();
		hook();
	}
}
// 这两个方法定义为抽象的,子类负责具体实现
abstract void primitiveOperation1();
abstract void primitiveOperation2();
// concreateOperation方法定义为final, 防止子类进行修改
final void concreteOperation() {
	// 具体实现
};
// 钩子方法, 可以留空,也可以有默认实现. 子类可以决定是否要进行覆盖.
void hook() {}

抽象类的代码如上, 模板方法中对应的关注点在代码注释中有详细说明. 代码中有hook()方法, 又被称作钩子方法. 钩子方法能够帮助我们修改模板方法中具体的执行逻辑. 因为hook()方法前面没有加入abstract关键字, 所以子类可以选择不实现.

具体实现

模板方法模式在很多框架中都有具体的使用, 比如Spring, JDK源码中的排序等. 这个模式让框架控制如何做事情, 而由使用框架的人来指定框架算法中每个步骤的细节.


695856371Web网页设计师②群 | 喜欢本站的朋友可以收藏本站,或者加入我们大家一起来交流技术!

0条评论

Loading...


自定义皮肤 主体内容背景
打开支付宝扫码付款购买视频教程
遇到问题联系客服QQ:419400980
注册梁钟霖个人博客