模板方法设计模式
来源:互联网 发布:网络电视 百度云 编辑:程序博客网 时间:2024/06/02 03:03
步骤 1 :设计模板类
先设计一个“模板”出来,这个类是一个抽象类。
注意:Game 的 play 方法是 final 的。
这个抽象类是模板设计模式的核心。
public abstract class Game { abstract void initialize(); abstract void startPlay(); abstract void endPlay(); // 模板(注意:使用 final 修饰) public final void play(){ initialize(); startPlay(); endPlay(); }}
步骤 2 :写出实现类
所有的具体类都要继承上面的抽象类。
具体类 1 :足球
public class Football extends Game { @Override void initialize() { System.out.println("football init"); } @Override void startPlay() { System.out.println("football start"); } @Override void endPlay() { System.out.println("football end"); }}
具体类 2 :三国杀
public class Sanguosha extends Game { @Override void initialize() { System.out.println("sanguosha init "); } @Override void startPlay() { System.out.println("sanguosha start "); } @Override void endPlay() { System.out.println("sanguosha end "); }}
步骤 3:写出测试类(测试方法)
public class TemplateTest { public static void main(String[] args) { // 多态 Game sgs = new Sanguosha(); sgs.play(); System.out.println("------ ------ ------"); // 多态 Game football = new Football(); football.play(); }}
总结:要扩展只要继续 extends Game 这个抽象基类即可。
扩展:模板设计模式中的钩子方法。
在模板方法模式中,由于面向对象的多态性,子类对象在运行时将覆盖父类对象,子类中定义的方法也将覆盖父类中定义的方法,因此程序在运行时,具体子类的基本方法将覆盖父类中定义的基本方法,子类的钩子方法也将覆盖父类的钩子方法,从而可以通过在子类中实现的钩子方法对父类方法的执行进行约束,实现子类对父类行为的反向控制。
0 0
- 模板方法设计模式
- 模板方法设计模式
- 模板方法设计模式
- 模板方法设计模式
- 【设计模式】模板方法
- 模板方法设计模式
- 设计模式--模板方法
- 模板方法设计模式
- 设计模式-模板方法
- 设计模式-模板方法
- 模板方法设计模式
- 模板方法设计模式
- 模板方法设计模式
- 模板方法设计模式
- 模板方法设计模式
- 模板方法设计模式
- 设计模式-模板方法
- 模板方法设计模式
- POJ 1141 - Brackets Sequence
- java protected访问权限
- 配置phpMyAdmin管理MySQL/MariaDB
- 【Leetcode】51. N-Queens(回溯)
- 153. Find Minimum in Rotated Sorted Array
- 模板方法设计模式
- ubuntu 16.04 完全卸载和重装mysql 5.7
- 分布式云盘环境搭建
- CentOS 7关闭firewalld启用iptables
- handler机制的原理
- Android网络请求处理异步回调风险方案
- 【数据结构】位图
- 语言基础知识(java)
- 分布式算法之取模算法的缺陷