您的位置:首页 > 其它

模版方法模式应该知道的事情

2016-02-25 00:00 253 查看
摘要: 模版方法模式的可扩展性,和其他模式的整合

模版方法模式应该知道的事情

模版方法模式的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()方法可以被覆盖吗?为什么?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息