模板方法设计模式简单实现
来源:互联网 发布:网络有什么好项目投资 编辑:程序博客网 时间:2024/05/16 16:18
1、模板方法介绍
模板方法模式是在一个方法中定义一个算法的骨架,将一些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
模板方法可以进行挂钩(hook),钩子(hook)是一种被声明在抽象类中的方法,但只有空的或者默认的实现。钩子的存在,可以让子类有能力对算法的不同点进行挂钩。
2、代码实现
/** * 4S店提供售卖模板 * @author Administrator * */public abstract class SaleCarTemplate{ public void processBuy(){ carLoan(); carInsurance(); carDecoration(); if(carLicenseBy4S()){ System.out.println("通过4S店办理上牌"); } else { carLicense(); } } public void carLoan(){ System.out.println("在4S店办理汽车贷款,一般强制"); } public void carInsurance(){ System.out.println("在4S店办理汽车保险,一般强制"); } /** * 默认通过4S店办理上牌,如果想自己上牌,就主动提出 */ public abstract void carLicense(); /** * 为吸引消费者,4S店会赠送一些汽车装饰,消费者自己选择需要什么装饰 */ public abstract void carDecoration(); public boolean carLicenseBy4S(){ // 钩子 return true; }}
/** * 消费者在模板基础上自定义购买套餐 * @author Administrator * */public class CustomerBuy extends SaleCarTemplate{ public void carLicense(){ System.out.println("不通过4S店上牌,自己上牌"); } public boolean carLicenseBy4S(){ String userInput = ""; boolean isAgreed = false; BufferedReader bufferReader = new BufferedReader(new InputStreamReader(System.in)); try { System.out.println("你想通过4S店办理上牌吗,回答y/n"); userInput = bufferReader.readLine(); } catch (IOException e) { e.printStackTrace(); } finally { try { bufferReader.close(); } catch (IOException e) { e.printStackTrace(); } } if(userInput.equals("y")){ isAgreed = true; } else { isAgreed = false; } return isAgreed; } @Override public void carDecoration() { System.out.println("赠送行车记录仪"); System.out.println("赠送贴膜"); }}
public static void main(String[] args) { System.out.println("开始汽车购买流程--------"); CustomerBuy customerBuy = new CustomerBuy(); customerBuy.processBuy(); }结果输出开始汽车购买流程--------在4S店办理汽车贷款,一般强制在4S店办理汽车保险,一般强制赠送行车记录仪赠送贴膜你想通过4S店办理上牌吗,回答y/nn不通过4S店上牌,自己上牌
阅读全文
0 0
- 模板方法设计模式简单实现
- 设计模式-模板方法模式 C++实现
- 模板设计模式,简单Java代码实现
- 设计模式C++实现--原型模式、模板方法模式
- 设计模式之 简单工厂模式(C++ 模板实现)
- 设计模式-工厂方法 简单工厂 抽象工厂 模板方法
- 模板方法设计模式
- 模板方法设计模式
- 模板方法设计模式
- 模板方法设计模式
- 【设计模式】模板方法
- 模板方法设计模式
- 设计模式--模板方法
- 模板方法设计模式
- 设计模式-模板方法
- 设计模式-模板方法
- 模板方法设计模式
- 模板方法设计模式
- bzoj1187: [HNOI2007]神奇游乐园
- java数据结构与算法-链地址法哈希表
- glusterFS 集群安装
- tensorflow入门之MLIST为ML初学者
- 2017.8.16. 任意进制转十进制
- 模板方法设计模式简单实现
- android studio version 2.3.3 打包签名V1和V2的问题
- ES6 Promise
- MySQL自定义函数用法详解-复合结构自定义变量/流程控制
- java通过反射获取对象的变量和变量值
- ng-zorro-antd初体验
- 微信小程序之发送输入法默认emoji
- elasticsearch查询去重
- 2017多校-7