模板方法设计模式扩展(Hook Method)
来源:互联网 发布:如何备份mysql 编辑:程序博客网 时间:2024/05/29 03:42
package Template_Method_Pattern;import java.util.Scanner;/** * 模板方法模式的扩展 * 钩子方法(Hook Method) * @author dd * */public class demo2 { public static void main(String[] args) { System.out.println("--------------宝马3系---------------"); System.out.println("宝马3系需不需要鸣笛?0:不需要; 1:需要"); Scanner s = new Scanner(System.in); String str = s.nextLine(); BMWX3Model b3 = new BMWX3Model(); if(str.equals("0")){ b3.setAlarm(false); } b3.run(); System.out.println("--------------宝马5系-------------------"); BMWX5Model b5 = new BMWX5Model(); b5.run(); }}abstract class BMWModel{ 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; }}class BMWX3Model extends BMWModel{ private boolean alarmFlag = true; protected boolean isAlarm(){ return this.alarmFlag; } public void setAlarm(boolean isAlarm){ this.alarmFlag = isAlarm; } @Override protected void start() { // TODO Auto-generated method stub System.out.println("宝马3系启动"); } @Override protected void stop() { // TODO Auto-generated method stub System.out.println("宝马3系停车"); } @Override protected void alarm() { // TODO Auto-generated method stub System.out.println("宝马3系鸣笛"); } @Override protected void engineBoom() { // TODO Auto-generated method stub System.out.println("宝马3系引擎响"); }}class BMWX5Model extends BMWModel{ @Override protected void start() { // TODO Auto-generated method stub System.out.println("宝马5系启动"); } @Override protected void stop() { // TODO Auto-generated method stub System.out.println("宝马5系停下"); } @Override protected void alarm() { // TODO Auto-generated method stub System.out.println("宝马5系鸣笛"); } @Override protected void engineBoom() { // TODO Auto-generated method stub System.out.println("宝马5系引擎响"); } protected boolean isAlarm(){ return false; }}
0 0
- 模板方法设计模式扩展(Hook Method)
- 设计模式之模板方法模式(Template Method)
- 设计模式4--模板方法模式(Template Method)
- C#设计模式之模板方法模式(Template Method)
- Java设计模式之模板方法模式(Template Method)
- 设计模式之七:模板方法模式(Template Method)
- Java设计模式----模板方法模式(Template Method)
- Java设计模式之模板方法模式(Template Method)
- 设计模式之:模板方法模式(Template Method)
- 设计模式:模板方法模式(Template Method)
- 【java设计模式】之 模板方法(Template Method)模式
- Java设计模式之--模板方法模式(Template Method)
- 设计模式:模板方法模式(Template Method)
- 设计模式(14)-模板方法模式(Template Method)
- Java设计模式之模板方法模式(Template Method)
- Java设计模式之模板方法(template method)模式
- Java设计模式之模板方法模式(Template Method)
- 设计模式随笔之模板方法模式(Template Method)
- 14、基于JDBC的BaseDao的实现
- FPGA:下一代机器人感知处理器
- React Native生命周期整理
- 【LeetCode-223】 Rectangle Area(C++)
- APP开发实战11-APP登录状态的维持
- 模板方法设计模式扩展(Hook Method)
- 1013
- 计算机网络
- 数组实现约瑟夫环
- C++回车换行时停止读入
- iOS之XMPP环境搭建
- 如何用js得到当前页面的url信息方法(JS获取当前网址信息)
- hdu——1010Tempter of the Bone
- leetcode-23-Merge k Sorted Lists