模版方法(Template Method)——类行为型模式
来源:互联网 发布:linux mv 多个文件夹 编辑:程序博客网 时间:2024/06/06 09:06
模版方法模式的意图:
定义一个操作中的算法的骨架,TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。即父类已经把算法的流程定义好了,子类只需要改变其中的某些步骤的实现。
就像我们要把东西放入冰箱中,需要的一套完整的流程即为; 打开冰箱,放入物品,关闭冰箱。其中打开和关闭都是固定的,而放入的物品则是不确定的,所以放入的物品需要我们在子类中来具体实现。实例化对象之后,去调用父类中的流程方法(TempleteMethod),就可以完成整个过程。这就是模版方法导致的一种反向控制结果,即让子类去找父类的方法。具体代码后面将会实现。
模版方法模式的结构图如下:
AbstractClass抽象类实现了一个模版方法,定义了一个算法的骨架,模版方法可以调用AbstractClass类中的方法,也可以调用其它类中的方法。
ConcreteClass实现父类操作中的某些特定子类相关的步骤。
模版方法模式的Java代码实现如下:
定义一个AbstractClass有模版方法和其它的模版固定方法,以及子类需要修改的抽象方法。
<pre name="code" class="java">package templatemethod;/** * 以向冰箱里放东西为例 */public abstract class AbstractClass {//模版方法public void templeteMethod(){open();putObject();close();}//开冰箱public void open(){System.out.println("开冰箱...");}//放东西public abstract void putObject();//关冰箱public void close(){System.out.println("关冰箱...");}}
两个具体子类实现的抽象方法:
package templatemethod;public class ConcreteClassA extends AbstractClass{@Overridepublic void putObject() {System.out.println("向冰箱里放入水果...");}}
package templatemethod;public class ConcreteClassB extends AbstractClass {@Overridepublic void putObject() {System.out.println("向冰箱中放入蔬菜...");}}测试类:
package templatemethod;public class TestMain {public static void main(String[] args) {AbstractClass a;//实例化ConcreteClassA()a = new ConcreteClassA();a.templeteMethod();//实例化ConcreteClassBa = new ConcreteClassB();a.templeteMethod();}}模版方法模式的适用性:
1、一次性实现一个算法的不变的部分,并将可变的部分留给子类来实现。
2、各子类中公共的行为应该被提取出来并集中到一个公共父类中避免重复代码。
3、控制子类扩展。
总结:
模版方法模式是一种类行为模式,与对象无关。而且模版方法模式可以通过子类去找父类的方法。他可以减少很多重复性代码,所以在好多框架中模版方法的使用还是比较多的,最为经典的就是在Spring中的使用,希望大家可以去了解了解。
1 0
- 模版方法(Template Method)——类行为型模式
- 行为型模式9:模版方法模式(Template Method)
- (第Ⅳ部分 行为型模式篇) 第15章 模版方法模式(Template Method)
- (第Ⅳ部分 行为型模式篇) 第15章 模版方法模式(Template Method)
- (第Ⅳ部分 行为型模式篇) 第15章 模版方法模式(Template Method)
- 23种设计模式(13)_行为型_模版方法模式(Template Method)
- Template Method 模板方法模式 ----类行为型模式
- Template Method模板方法(行为型模式)
- 模版方法(Template Method)模式
- 模板方法(Template Method)-----类行为型模式
- 模板方法模式Template method(类行为型)
- 模板方法模式Template method(类行为型)
- 模板方法模式Template method(类行为型)
- 3.10 Template Method(模板方法) -- 类行为型模式
- Template Method模板方法设计模式(类行为型)
- (行为型模式)TEMPLATE METHOD——模板方法模式
- 设计模式(11)——模板方法模式(Template Method Pattern,行为型)
- JAVA设计模式(14) —<行为型>模板方法模式(Template Method)
- IOS开发之多态
- Linux系统下可执行文件的运行过程
- Parcelable接口介绍与使用
- JAVA字符串谜题
- 关于线程的一点总结
- 模版方法(Template Method)——类行为型模式
- shell函数
- 添加Structs和Spring支持-----SSH框架搭建2
- DEDE模板中如何使用if进行多分支判断
- iOS复制内容到剪切版
- Python基础:常用函数
- 基于XMPP协议的Android即时通信系
- IOS行货自动打包
- Oracle 安装报SGA size can not be greater than maximum shared memory segment size(0)