前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >模板模式

模板模式

作者头像
发布2019-04-18 16:49:49
4390
发布2019-04-18 16:49:49
举报
文章被收录于专栏:WD学习记录

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

意图:定义一个操作中的算法的骨架,将一些步骤的实现延迟到子类中。

解决一些方法通用,却在每一个子类中都重写这一方法。

优点:1. 封装不变部分,扩展可变部分。2.提取公共代码,便于维护。3. 行为由父类控制,子类实现。

缺点:每个不同的实现都需要一个子类来实现。导致类的个数增加,使得系统更加庞大。

使用场景:有多个子类公有的方法,且逻辑相同。重要的复杂的方法,可以考虑作为模板方法。

实例:

代码语言:javascript
复制
public abstract class Shopping {

    public void buyGoods(){
        userLogin();
        buy();
        pay();
    }

    public final void userLogin(){
        System.out.println("用户登录");
    }

    public abstract void buy();

    public void pay(){
        System.out.println("使用银联支付");
    }
}
代码语言:javascript
复制
public class ShoesShopping extends Shopping {
    @Override
    public void buy(){
        System.out.println("购买Nike鞋子!!!!");
    }
}
代码语言:javascript
复制
public class ClothesShopping extends Shopping {
    @Override
    public void buy(){
        System.out.println("购买海澜之家的衣服!!!!");
    }

    @Override
    public void pay(){
        System.out.println("使用支付宝支付");
    }
}
代码语言:javascript
复制
public class Client {
    public static void main(String[] args){
        Shopping shoesShopping=new ShoesShopping();
        shoesShopping.buyGoods();
        System.out.println("----------------");
        Shopping clothesShopping=new ClothesShopping();
        clothesShopping.buyGoods();
    }
}

参考:

菜鸟教程 模板模式

模板模式

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年04月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档