模板方法模式
来源:互联网 发布:明星没文化知乎 编辑:程序博客网 时间:2024/05/21 15:51
1.模板方法模式的定义:
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
2.模板方法模式的结构和说明:
AbstractClass: 抽象类。用来定义算法骨架和原语操作,具体的子类通过重定义这些原语操作来实现一个算法的各个步骤。在这个类里面,还可以提供算法中通用的实现。
ConcreteClass: 具体实现类。用来实现算法骨架中的某些步骤,完成与特定子类相关的功能。
3.模式实现
ConcreteClass.java
Client.java
ConcreteClass--doPrimitiveOperation1
ConcreteClass--doPrimitiveOperation2
4.思考模板方法模式
A,模板方法模式的本质:固定算法骨架
模板方法模式的功能在于固定算法骨架,而让具体算法实现可扩展。
这在实际使用中非常广泛,尤其是在设计框架级功能的时候非常有用。框架定义好了算法的步骤,在合适的点让开发人员进行扩展,实现具体的算法。
模板方法模式还额外提供了一个好处,就是可以控制子类的扩展,因为在父类中定义好了算法的步骤,只是在某几个固定的点才会调用到被子类实现的方法,因此也就只允许在这几个点来扩展功能。这些可以被子类覆盖以扩展功能的方法通常被成为"钩子"方法。
B,何时选用模板方法模式,建议在以下情况中选用:
1), 需要固定定义算法骨架,实现一个算法的不变的部分,并把可变的部分留给子类来实现的情况。
2), 各个子类中具有公共行为,应该抽取出来,集中在一个公共类中去实现,从而避免代码重复。
3),需要控制子类扩展的情况,模版方法模式会在特定的点调用子类的方法,这样只允许在这些点进行扩展。
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
2.模板方法模式的结构和说明:
AbstractClass: 抽象类。用来定义算法骨架和原语操作,具体的子类通过重定义这些原语操作来实现一个算法的各个步骤。在这个类里面,还可以提供算法中通用的实现。
ConcreteClass: 具体实现类。用来实现算法骨架中的某些步骤,完成与特定子类相关的功能。
3.模式实现
AbstractClass.java
package com.java.pattern.templateMethod;/** * 定义模板方法、原语操作等的抽象类 */public abstract class AbstractClass {/** * 原语操作1,原语操作就是抽象操作,必要要有子类提供实现 * */public abstract void doPrimitiveOperation1();/** * 原语操作2 * */public abstract void doPrimitiveOperation2();/** * 模板方法,定义算法骨架 */public final void templateMethod() {doPrimitiveOperation1();doPrimitiveOperation2();}}
ConcreteClass.java
package com.java.pattern.templateMethod;/** * 具体实现类,实现原语操作 */public class ConcreteClass extends AbstractClass {public void doPrimitiveOperation1() {// 具体实现System.out.println("ConcreteClass--doPrimitiveOperation1");}public void doPrimitiveOperation2() {// 具体实现System.out.println("ConcreteClass--doPrimitiveOperation2");}}
Client.java
package com.java.pattern.templateMethod;/** * 客户端 */public class Client {public static void main(String[] args) {AbstractClass abstractClass = new ConcreteClass();abstractClass.doPrimitiveOperation1();abstractClass.doPrimitiveOperation2();}}
ConcreteClass--doPrimitiveOperation1
ConcreteClass--doPrimitiveOperation2
4.思考模板方法模式
A,模板方法模式的本质:固定算法骨架
模板方法模式的功能在于固定算法骨架,而让具体算法实现可扩展。
这在实际使用中非常广泛,尤其是在设计框架级功能的时候非常有用。框架定义好了算法的步骤,在合适的点让开发人员进行扩展,实现具体的算法。
模板方法模式还额外提供了一个好处,就是可以控制子类的扩展,因为在父类中定义好了算法的步骤,只是在某几个固定的点才会调用到被子类实现的方法,因此也就只允许在这几个点来扩展功能。这些可以被子类覆盖以扩展功能的方法通常被成为"钩子"方法。
B,何时选用模板方法模式,建议在以下情况中选用:
1), 需要固定定义算法骨架,实现一个算法的不变的部分,并把可变的部分留给子类来实现的情况。
2), 各个子类中具有公共行为,应该抽取出来,集中在一个公共类中去实现,从而避免代码重复。
3),需要控制子类扩展的情况,模版方法模式会在特定的点调用子类的方法,这样只允许在这些点进行扩展。
0 0
- 深入浅出模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法设计模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- TemplateMethod模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 敲砖块(dp )
- 微信能从图片获取位置信息,原理其实很简单
- Android - 解析Json框架:Gson实体类映射
- css3 图片旋转效果 以y轴翻转效果等
- 解决进入不了controller的方法
- 模板方法模式
- Oracle中把逗号分割的字符串转换为可放入in的条件语句的字符数列
- 遍历Map的四种方法
- yii2学习笔记
- html5语义化标签
- 文件上传和下载案例
- android 集成第三方静态库的编译方法
- mogo操作
- 嘀嗒~小球时钟