模板方法模式
是什么?
模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。
结构组成及作用
下图是模板方法模式的UML类图:
模板方法模式还存在一种形式,即比如primitiveOperation1还可以是:(出自[1]的描述。)
一个钩子操作(hook operations),它提供了缺省的行为,子类可以在必要时进行扩展。一个 钩子操作在缺省操作通常是一个空操作(空方法)。
很重要的一点是模板方法应该指明哪些操作是钩子操作(可以被重定义)以及哪些是抽 象操作(必须被重定义)。要有效地重用一个抽象类,子类编写者必须明确了解哪些操作是设 计为有待重定义的。
事实上,模板方法模式实现形式不是千遍一律,例如:Java中的Arrays.sort(Object[] o)方法和该方法中调用的compareTo就是一个模板方法模式的实现,但是他们并没有使用继承。
作用:模板方法是一种代码复用的基本技术。模板方法导致一种反向的控制结构,使得结果是一个父类去调用子类的操作,而不是子类调用父类。
示例实现
模板方法的实现其实在jdk中随处可见,比如,java.io.InputStream
的read(byte b[], int off, int len)
方法;java.text.DateFormat
中的parse(String source)
方法等等。
效果及应用场景
当希望先实现算法的不变部分,然后再将可变的操作留给子类实现。
当希望提取一些公共的操作到父类以避免重复时。
可使用模板方法模式。
references
[1]Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides.设计模式:可复用面向对象软件的基础[M].中国:机械工业出版社,2000
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论