设计模式之模版模式

模版模式

定义:一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。

这里写图片描述

模版模式最常见模式之一,也许你就在使用当中。模版模式运用了面向对象的继承特性,把通用的流程都提炼到父类,把具体行为让子类去实现。比如上网买东西通用的流程都是登录、购物、结账、注销四个步骤,网上商超平台有很多,像mila,waka等,也不外乎这四个步骤,而每个平台四个步骤形式各不一样,所以每个平台都自己实现自己的方法。

代码实例

抽象商店类


    public abstract class Shop {

        protected abstract void login();
        protected abstract void pay();
        protected abstract void logout();

        public void shopping(){
            login();
            pay();
            logout();
        }

    }

具体商店


public class Mila extends Shop{

    protected void login() {
        System.out.println("登录Mila");
    }

    protected void pay() {
        System.out.println("结账Mila");
    }

    protected void logout() {
        System.out.println("注销Mila");
    }

}


public class Waka extends Shop{

    protected void login() {
        System.out.println("登录Waka");
    }

    protected void pay() {
        System.out.println("结账Waka");
    }

    protected void logout() {
        System.out.println("注销Waka");
    }

}

子类去实现抽象方法就好了,是不是很眼熟,模版模式就是这么简单。当动态选择执行方法,可以加个判断逻辑,这也称为钩子方法。


    private boolean isPay;

    public void shopping() {
        login();
        if (isPay) {
            pay();
        }
        logout();
    }

    public void setPay(boolean isPay) {
        this.isPay = isPay;
    }

总的来说,模版模式应用场景很广泛,在没认识模版模式之前,也许写了模版模式都认不出。模版模式很容易掌握,像JavaAPI大多类都存在模版模式的身影。不足之处望指教。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值