返回介绍

模板方法模式

发布于 2023-10-02 15:31:45 字数 5591 浏览 0 评论 0 收藏 0

是什么?

模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。

结构组成及作用

下图是模板方法模式的UML类图:  TemplateMethod UML Class diagram

模板方法模式还存在一种形式,即比如primitiveOperation1还可以是:(出自[1]的描述。)

一个钩子操作(hook operations),它提供了缺省的行为,子类可以在必要时进行扩展。一个 钩子操作在缺省操作通常是一个空操作(空方法)。

很重要的一点是模板方法应该指明哪些操作是钩子操作(可以被重定义)以及哪些是抽 象操作(必须被重定义)。要有效地重用一个抽象类,子类编写者必须明确了解哪些操作是设 计为有待重定义的。

事实上,模板方法模式实现形式不是千遍一律,例如:Java中的Arrays.sort(Object[] o)方法和该方法中调用的compareTo就是一个模板方法模式的实现,但是他们并没有使用继承。

作用:模板方法是一种代码复用的基本技术。模板方法导致一种反向的控制结构,使得结果是一个父类去调用子类的操作,而不是子类调用父类。

示例实现

完整代码么么哒

模板方法的实现其实在jdk中随处可见,比如,java.io.InputStreamread(byte b[], int off, int len)方法;java.text.DateFormat中的parse(String source)方法等等。

效果及应用场景

  1. 当希望先实现算法的不变部分,然后再将可变的操作留给子类实现。

  2. 当希望提取一些公共的操作到父类以避免重复时。

可使用模板方法模式。

references

[1]Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides.设计模式:可复用面向对象软件的基础[M].中国:机械工业出版社,2000

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文