我看懂的设计模式 Template Method,模板方法
来源:互联网 发布:insar数据 编辑:程序博客网 时间:2024/04/30 16:34
Template Method,模板方法:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,TemplateMethod使得子类可以不改变一个算法的结构即可以重定义该算法得某些特定步骤。
package com.cbf4life;
/**
* Hummer Model是悍马车辆模型的意思
*/
public abstract class HummerModel {
protected abstract void start();
protected abstract void stop();
protected abstract void alarm();
protected abstract void engineBoom();
final public void run() {
this.start();
this.engineBoom();
if(this.isAlarm()){
this.alarm();
}
this.stop();
}
//钩子方法,默认喇叭是会响的
protected boolean isAlarm(){
return true;
}
}
package com.cbf4life;
public class HummerH2Model extends HummerModel {
@Override
protected void alarm() {
System.out.println("悍马H2鸣笛...");
}
@Override
protected void engineBoom() {
System.out.println("悍马H2引擎声音是这样在...");
}
@Override
protected void start() {
System.out.println("悍马H2发动...");
}
@Override
protected void stop() {
System.out.println("悍马H2停车...");
}
//默认没有喇叭的
@Override
protected boolean isAlarm() {
return false;
}
}
package com.cbf4life;
public class Client {
public static void main(String[] args) {
HummerH2Model h2 = new HummerH2Model();
h2.run();
}
}
package com.cbf4life;
public class HummerH1Model extends HummerModel {
private boolean alarmFlag = true; //是否要响喇叭
@Override
protected void alarm() {
System.out.println("悍马H1鸣笛...");
}
@Override
protected void engineBoom() {
System.out.println("悍马H1引擎声音是这样在...");
}
@Override
protected void start() {
System.out.println("悍马H1发动...");
}
@Override
protected void stop() {
System.out.println("悍马H1停车...");
}
@Override
protected boolean isAlarm() {
return this.alarmFlag;
}
//要不要响喇叭,是有客户的来决定的
public void setAlarm(boolean isAlarm){
this.alarmFlag = isAlarm;
}
}
package com.cbf4life;
public class Client {
public static void main(String[] args) {
HummerH1Model h1 = new HummerH1Model();
h1.setAlarm(true);
h1.run();
}
}
- 我看懂的设计模式 Template Method,模板方法
- 设计模式----模板方法模式(Template Method)
- [设计模式]模板方法模式(Template Method)
- 设计模式:模板方法模式-template method
- 设计模式 模板方法模式 Template Method
- 我看懂的设计模式 Factory Method工厂方法
- 设计模式----Template Method(模板方法)
- 设计模式学习-Template Method(模板方法)
- 设计模式之Template Method (模板方法)
- Java设计模式 模板方法(Template Method)
- c++设计模式----模板方法template method
- 设计模式 - 模板方法(Template Method)
- 设计模式之模板方法Template Method
- Java 设计模式--模板方法(Template Method)
- 我所理解的设计模式(C++实现)——模板方法模式(Template Method Pattern)
- 我所理解的设计模式(C++实现)——模板方法模式(Template Method Pattern)
- 我所理解的设计模式(C++实现)——模板方法模式(Template Method Pattern)
- 设计模式之Template Method模式(模板方法模式)
- UVa 11635 - Hotel booking
- windows下ffmpeg编译+codeblock+msys
- Python: 运算符与用法
- c使用json-c库
- Launcher 壁纸随着左右滑动,临界时自然过渡
- 我看懂的设计模式 Template Method,模板方法
- Javascript高级
- Smarty:变量调节器&插件&缓存
- 问答——为什么很多 iOS app 存在秒退现象?有什么好的方法避免?
- SQL server 2005 如何批量修改架构名(包括表名和存储过程名)
- python: 正则表达式指南
- OPENXML将EXCEL转DataTable及空值处理,插入数据库
- C#中的常量
- js parsefloat parseint