设计23式—模板方法
来源:互联网 发布:windows模拟器中文版 编辑:程序博客网 时间:2024/04/30 08:53
最近在看设计模式之禅,书的内容以讲故事的方式介绍了设计模式,强力推荐。
以下是个人对于模板方法模式的理解
/* * 模板方法模式 * 优点 * 封装不变部分,扩展可变部分 * 提取公共部分代码,便于维护 * 行为由父类控制,子类实现 * */public class MyMain {public static void main(String[] args) {new carA().test();new carB().test();}}//核心//定义一个抽象的车模型类(抽象模板)abstract class carModel{//车的基本抽象方法:启动protected abstract void start();//车的基本抽象方法:暂停protected abstract void stop();//车的基本抽象方法:奔跑protected abstract void run();//车的模板方法:测试 ,用于测试车模型的基本方法(既子类提取的公共方法:测试)protected void test() {System.out.println("开始测试车模型:");this.start();if (isRun()) {this.run();}this.stop();System.out.println("测试结算。");};//钩子方法 默认测试时车是要奔跑起来的(子类重写该方法,可用于控制测试时是否要奔跑)protected boolean isRun() {return true;}}//继承车模型的A类车模型(具体模板)class carA extends carModel{//实现车模型的基本方法@Overrideprotected void start() {System.out.println("A类车启动");}@Overrideprotected void stop() {System.out.println("A类车暂停");}@Overrideprotected void run() {System.out.println("A类车奔跑");}//重写钩子方法,使A类车测试时不用奔跑起来@Overrideprotected boolean isRun() {return false;}}//继承车模型的B类车模型(具体模板)class carB extends carModel{@Overrideprotected void start() {System.out.println("B类车启动");}@Overrideprotected void stop() {System.out.println("B类车暂停");}@Overrideprotected void run() {System.out.println("B类车奔跑");}}
阅读全文
0 0
- 设计23式—模板方法
- C#设计模式之23——模板方法模式
- 23种设计模式之——模板方法模式
- 23设计模式之模板方法(TemplateMethod)
- 23设计模式之模板方法(TemplateMethod)
- 23种设计模式-模板方法模式
- 设计模式——模板方法模式
- 设计模式之——模板方法
- 设计模式——模板方法
- 设计模式——模板方法模式
- 设计模式——模板方法模式
- JAVA基础——模板设计方法
- 设计模式(5)——模板方法
- 设计模式——模板方法模式
- 设计模式——模板方法
- 设计模式——模板方法
- 设计模式——模板方法
- 设计模式——模板方法
- css里px、em、rem的区别和应用
- 从前端到全端:JavaScript逆袭之路
- 搭建自己的ss服务器
- java代码--通过某路径读取数据
- 十一月一号课堂笔记
- 设计23式—模板方法
- 10月个人总结
- ESP8266编译脚本
- 蓝桥杯 入门训练 序列求和
- Jacoco覆盖率工具使用(已测试)
- ES6的let 与 const 的用法
- vivado IP操作
- D
- 2017年10月反思