### 模板方法模式
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。(摘抄)
模板方法模式使一个比较简单的模式,平时其实编程中肯定用得挺多的,只是不知道叫这个名字罢了,模板方法模式就是把一些固定的行为放到超类中去,去掉这些重复的代码从而减少代码量,这样就提供了一个复用性很好的代码平台。
回调中其实就用到了模板方法模式。
举个生活中很简单的例子,你要到开门进入房间,那么过程总是先开门,再进入房间。开门的方法有很多种,密码,声控,钥匙等,进入房间的方法也有很多种,走进,跑进,爬进,跳进等。那么这时就可以把开门进入房间这个固定的过程作为一个模板,然后具体的方法具体继承实现。
~~~
abstract class OpenCome
{
public abstract void open();
public abstract void come();
public void templateMethod()
{
open();
come();
System.out.println("我已进入");
}
}
class KeyOpenWalkCome extends OpenCome
{
@Override
public void open() {
// TODO Auto-generated method stub
System.out.println("钥匙开门");
}
@Override
public void come() {
// TODO Auto-generated method stub
System.out.println("走入门内");
}
}
class VoiceOpenWalkCome extends OpenCome
{
@Override
public void open() {
// TODO Auto-generated method stub
System.out.println("声控开门");
}
@Override
public void come() {
// TODO Auto-generated method stub
System.out.println("跑入门内");
}
}
class Client
{
public static void main()
{
OpenCome openCome = new KeyOpenWalkCome();
openCome.templateMethod();
openCome = new VoiceOpenWalkCome();
openCome.templateMethod();
}
}
~~~
上面举的开门进入的例子代码差不多就是这样实现,当你需要改变实现方法时继承父类重写动作就好了。把一些重复的代码抽象出来变成模板,这样自己使用会更方便,同时代码结构也会比较清晰
- 前言
- (1)代码无错就是优?——简单工厂模式
- (2)商场促销——策略模式
- (3)&(4)&(5) 设计模式原则
- (6)穿什么有这么重要?——装饰模式
- (7)为别人做嫁衣——代理模式
- (8)雷锋依然在人间——工厂方法模式
- (9)简历复印——原型模式
- (10)考题抄错会做也白搭——模板方法模式
- (11)迪米特法则
- (12)牛市股票还会亏钱?—— 外观模式
- (13)好菜每回味不同——建造者模式
- (14)老板回来,我不知道——观察者模式
- java实现事件委托
- (15)就不能不还DB吗?—— 抽象工厂模式
- (16)无尽加班何时休息——状态模式
- (17)在NBA我需要翻译——适配器模式
- (18)如果再回到从前——备忘录模式
- (19)分公司=部门——组合设计模式
- (20)想走?可以!先买票——迭代器模式
- (21)有些类也需计划生育——单例模式
- (22)手机软件何时统一——桥接模式
- (23)烤羊肉串引来的思考——命令模式
- (24)加薪非要老总批?——职责链模式
- (25)世界需要和平——中介者模式
- (26)项目多也别傻做——享元模式
- (28)男人和女人——访问者模式