前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >复习:GoF的23种设计模式之Template Method模式(行为型)

复习:GoF的23种设计模式之Template Method模式(行为型)

作者头像
营琪
发布2019-12-20 14:48:38
3620
发布2019-12-20 14:48:38
举报
文章被收录于专栏:营琪的小记录营琪的小记录
Template Method模式 (模型)

我们先介绍什么是模板

就如我们打开CSDN的每一个页面,都有一个已备案提醒的尾标,每一个页面都有,那么是不是每个页面都去添加相同的代码呢?

答:不是的,我们先写一个模板,此模板就具有尾标,我们每个页面都是借助这个母模板,那么我们就不需要手动的去添加了。

那什么是 Template Method(模型)模式

答:在父类中定义处理流程的框架,在子类中实现具体的处理。模板方法仅决定这些抽象方法的执行顺序,这些抽象方法的实现都由子类负责,并且子类不允许覆写模板方法。

示例代码:

假设场景:假如我们的网页对Vip用户和普通用户的请求有不同的响应。

代码语言:javascript
复制
public class TemplateMethodTest {
    public static void main(String[] args) {
        //普通用户请求时
        MotherAbstractClass common = new CommonConcreteClass();
        common.response();
        //vip用户请求时
        MotherAbstractClass vip = new VipConcreteClass();
        vip.response();
    }
}

abstract class MotherAbstractClass {
    public final void response() {
        open();
        data();
    }
    public abstract void open();
    public abstract void data();
}

class VipConcreteClass extends MotherAbstractClass {
    @Override
    public void open() {
        System.out.println("我是vip");
    }
    @Override
    public void data() {
        System.out.println("我是vip的响应数据");
    }
}

class CommonConcreteClass extends MotherAbstractClass {
    @Override
    public void open() {
        System.out.println("我是普通用户");
    }
    @Override
    public void data() {
        System.out.println("我是普通的响应数据");
    }
}

UML类图

什么时候使用

其实我们在不知不觉中就会使用到模板模型,返回看iterate模型、adapter模型等,都会发现我们其实已经使用过了,那我们又为什么去学习这种设计模式呢?只能说,我们现在爬的山还不够高,看的不远,前人的智慧总结,用时方恨少。

  1. 可以使逻辑处理通用化,更方便判断错误
  2. 父类约束子类,使双方更加协调
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 我们先介绍什么是模板
  • 那什么是 Template Method(模型)模式
  • 示例代码:
    • UML类图
    • 什么时候使用
    相关产品与服务
    ICP备案
    在中华人民共和国境内从事互联网信息服务的网站或APP主办者,应当依法履行备案手续。腾讯云为您提供高效便捷的 ICP 备案服务。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档