Java设计模式之模板方法模式

国际惯例,扯闲篇

上次没写的抽象工厂模式已经悄悄补上了,今天敲代码的时候刚好打算用这个模板方法模式,所以就来把这个模式写一写吧,权当是复习了。

模板方法模式(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("", "大口大口地吃");
            }
        };

结语:

这个好像挺简单的,就写这么多了,不明白就多敲几遍,欢迎评论~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值