模板模式
来源:互联网 发布:新浪足球数据库 编辑:程序博客网 时间:2024/06/06 01:04
1.建立一个抽象模板类
public abstract class HummerModel { protected abstract void start(); protected abstract void stop(); protected abstract void alarm(); protected abstract void engineBoom(); public void run(){ this.start(); this.engineBoom(); if (this.isAlarm()){ this.alarm(); } this.stop(); } //这是一个钩子方法 protected boolean isAlarm(){ return true; }}
2.具体实现类
public class HummerH1Model extends HummerModel { private boolean isAlarm = true; @Override protected void start() { System.out.println("悍马1启动"); } @Override protected void stop() { System.out.println("悍马1暂停"); } @Override protected void alarm() { System.out.println("悍马1鸣笛"); } @Override protected void engineBoom() { System.out.println("悍马1发动机声音"); } @Override protected boolean isAlarm() { return this.isAlarm; } public void setAlarm(boolean alarm) { this.isAlarm = alarm; }}
3.场景类
public class Client { public static void main(String[] args) throws IOException { HummerH1Model hummer1Model = new HummerH1Model(); System.out.println("--------悍马1--------"); System.out.println("悍马1是否需要喇叭声响?0-不需要 1-需要"); String type = (new BufferedReader(new InputStreamReader(System.in))).readLine(); if (type.equals("0")){ hummer1Model.setAlarm(false); }else if (type.equals("1")){ hummer1Model.setAlarm(true); } hummer1Model.run(); HummerH2Model hummer2Model = new HummerH2Model(); hummer2Model.run(); }}
4.模板方法的应用场景
①多个子类用共有的方法并且逻辑基本相同时
②重要、复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能则由各个子类去实现
③重构时模板方法模式是一个经常使用的模式,把相同打代码抽取到父类中,然后通过钩子函数(钩子函数见1)约束其行为
阅读全文
0 0
- 模板模式-抽象模板
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- Java程序 如何复制文件夹
- Qt之生成png/jpg/bmp格式图片
- 让你的Idea高大上--activate-power-mode-master
- python web开发——Django后台管理
- 哈夫曼编码大全
- 模板模式
- Android 批量打包 基于Walle的多渠道快速打包自动脚本
- CSP(Content Security Policy),在一定程度上能预防XSS攻击
- SQL反模式(七)
- Pass的通用指令开关
- 投资后的收获
- 习题8-3 比特变换器(Bits Equalizer, SWERC 2012, UVa12545)
- 阿里云centos6.9经典网络下配置gre隧道地址
- Math类