码农小汪-设计模式-模板方法
来源:互联网 发布:三国杀 知乎 编辑:程序博客网 时间:2024/06/06 20:49
模板方法
啥子东西叫我做模板,我就不说了吧!这个很清楚的。比如简历模板,我们做的卷子也是模板吧,空空给你留着,每人人做的答案各有异同。
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
优点: 1、封装不变部分,扩展可变部分。 2、提取公共代码,便于维护。 3、行为由父类控制,子类实现。
缺点:每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。
一个游戏的模板方法
public abstract class Game { abstract void initialize(); abstract void startPlay(); abstract void endPlay(); //模板 public final void play(){ //初始化游戏 initialize(); //开始游戏 startPlay(); //结束游戏 endPlay(); }}
创建扩展了上述类的实体类。
public class Cricket extends Game { @Override void endPlay() { System.out.println("Cricket Game Finished!"); } @Override void initialize() { System.out.println("Cricket Game Initialized! Start playing."); } @Override void startPlay() { System.out.println("Cricket Game Started. Enjoy the game!"); }}
public class Football extends Game { @Override void endPlay() { System.out.println("Football Game Finished!"); } @Override void initialize() { System.out.println("Football Game Initialized! Start playing."); } @Override void startPlay() { System.out.println("Football Game Started. Enjoy the game!"); }}
public class TemplatePatternDemo { public static void main(String[] args) { Game game = new Cricket(); game.play(); System.out.println(); game = new Football(); game.play(); }}
这个挺简单的,不用我们说太多的东西的!
0 0
- 码农小汪-设计模式-模板方法
- 模板方法设计模式
- 模板方法设计模式
- 模板方法设计模式
- 模板方法设计模式
- 【设计模式】模板方法
- 模板方法设计模式
- 设计模式--模板方法
- 模板方法设计模式
- 设计模式-模板方法
- 设计模式-模板方法
- 模板方法设计模式
- 模板方法设计模式
- 模板方法设计模式
- 模板方法设计模式
- 模板方法设计模式
- 模板方法设计模式
- 设计模式-模板方法
- linux下安装redis
- 利用viewPager 制作滑动页面 源码
- 回文数
- 多播(组播)
- 递归的全排列(耗时比较长)
- 码农小汪-设计模式-模板方法
- 图像恢复技术之Matlab中的维纳滤波代码复现
- 一个大四求职菜鸟的web前端之路(终)
- C++ 中Traits技术 (3) —— 关于特化和偏特化
- HashMap学习笔记
- Qt学习记录--03 Qt的信号槽的使用
- 原生 js 实现全屏滚动效果
- LeetCode——034
- lintcode之最长公共前缀