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

Template Method模式 (模型)

我们先介绍什么是模板

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

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

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

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

示例代码:

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

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. 父类约束子类,使双方更加协调
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值