国际惯例,扯闲篇
上次没写的抽象工厂模式已经悄悄补上了,今天敲代码的时候刚好打算用这个模板方法模式,所以就来把这个模式写一写吧,权当是复习了。
模板方法模式(Template Method)介绍
- 模板方法模式是编程中经常能够用到的一个模式,它定义了一个操作的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤。
核心:
处理步骤在父类中定义好,具体实现延迟到子类中定义
场景:
现在我们要去面馆吃饭,这个流程我们知道,点单,吃面,买单(假如我们就是吃完再买可以吧,吃霸王餐不提倡)。由此我们可以定义这样一个类:
public abstract class EatTemplateMethod {
private void order() {
Log.d("", "点了一碗牛肉面");
}
public abstract void eat();
private void pay() {
Log.d("", "付了20元");
}
//模板方法:将基础操作组合到一起,子类一般不能重写
public final void process() {
this.order();
//像个钩子,挂哪个子类的方法,就调用哪个
this.eat();
this.pay();
}
}
当我们需要具体定义这个吃的方法时,我们可以定义个模板类的子类,在子类中定义具体实现:
public class Client {
class Eat extends EatTemplateMethod{
//具体怎么吃,延迟到了这里实现
@Override
public void eat() {
Log.d("", "大口大口地吃");
}
}
//调用
private void test() {
Eat eat = new Eat();
eat.eat();
}
}
当然也可以用匿名内部类的写法:
EatTemplateMethod eatTemplateMethod = new EatTemplateMethod() {
@Override
public void eat() {
Log.d("", "大口大口地吃");
}
};
结语:
这个好像挺简单的,就写这么多了,不明白就多敲几遍,欢迎评论~~