模版方法模式应该知道的事情
2016-02-25 00:00
253 查看
摘要: 模版方法模式的可扩展性,和其他模式的整合
模版方法模式应该知道的事情
模版方法模式的UML图:
模版方法模式可以说的上是设计模式里面最简单的一种模式了,它主要作用就是抽象类负责定义子类的实现顺序,和组合,继承类就负责实现父类的抽象方法。很多时候人们都容易忘记有它,但又可以经常使用。原因是很多时候一个框架的开头基本上都是用这种模式做整体设计。所以它必须要知道的有两点:第一点是可扩展性:很多看过spring MVC源码的朋友都可以知道它的可扩展是怎么设计的(后面《spring 必须要知道的事情》系列里面专门介绍),我也写一个可扩展性例子:
第二点就是它和其他设计模式的紧密联系:策略模式和工厂方法模式就是基于模版方法模式的一些变化,具体可以看这两个模式的实现文章。
顺便提一下:很多时候一些同学都会被面试问道:String可以被继承吗?为什么?那我在这里就想问:start()方法可以被覆盖吗?为什么?
模版方法模式应该知道的事情
模版方法模式的UML图:
模版方法模式可以说的上是设计模式里面最简单的一种模式了,它主要作用就是抽象类负责定义子类的实现顺序,和组合,继承类就负责实现父类的抽象方法。很多时候人们都容易忘记有它,但又可以经常使用。原因是很多时候一个框架的开头基本上都是用这种模式做整体设计。所以它必须要知道的有两点:第一点是可扩展性:很多看过spring MVC源码的朋友都可以知道它的可扩展是怎么设计的(后面《spring 必须要知道的事情》系列里面专门介绍),我也写一个可扩展性例子:
//抽象的开始类 public abstract class AbstractStart { public void init() { } public void end() { } public abstract void say(); public abstract void bye(); public final void start() { init(); say(); bye(); end(); } } //具体的开始子类 public class Start extends AbstractStart { @Override public void say() { log("say"); } @Override public void bye() { log("bye"); } public void log(String strLog) { System.out.println(strLog); } } //那我的扩展性是怎么实现的呢?其实是一个很简单的使用技巧,就看基本功的一个小事情。 public class ExStart extends Start{ @Override public void init() { log("the start....."); } @Override public void end() { log("the end....."); } }
第二点就是它和其他设计模式的紧密联系:策略模式和工厂方法模式就是基于模版方法模式的一些变化,具体可以看这两个模式的实现文章。
顺便提一下:很多时候一些同学都会被面试问道:String可以被继承吗?为什么?那我在这里就想问:start()方法可以被覆盖吗?为什么?
相关文章推荐
- Java并发编程之性能、扩展性和响应
- 亚马逊AWS在线系列讲座——如何在AWS云平台上构建千万级用户应用
- 模版方法模式
- 设计新Xlator扩展GlusterFS
- 设计模式 模版方法模式 展现程序员的一天
- 一致性哈希算法(Consistent Hashing)
- 读书笔记:网站架构之扩展性篇
- 设计模式之模版方法模式
- 大数据之道是OLAP+OLTP+扩展性,那个解答是InfiniData
- 设计模式学习之----模板方法模式
- 23种设计模式之模版方法模式
- 设计模式学习之模版方法模式
- SDK的设计
- 设计模式之模版方法模式
- 模板方法模式
- 行为模式之模板方法模式
- 设计模式之模版方法模式
- 设计模式总结之TemplateMethod Pattern(模版方法模式)
- java设计模式-模板方法(方法回调,钩子函数)
- 12.java设计模式(读书笔记)模版方法模式