模板模式

模板模式

一、简介

模板模式即定一个操作中的算法骨架,将具体的算法细节延迟到子类中实现。这样可以使得子类不改变一个算法的结构即可定义该算法的某些特定实现细节。具体可以看如下类图:


二、实现案例

例如我们需要对电脑的启动过程进行设计,我们假设电脑的启动大致有开启电源、硬件检测、启动操作系统三个主要步骤,但是对于不同的硬件设备、不同的操作系统,具体的硬件检测及操作系统启动是不同的,这时候我们可以考虑使用模板模式来解决这一问题。

下面定义一个AbstractComputer抽象模板类,如下:

public abstract class AbstractComputer {

    public abstract void powerOn();
    public abstract void checkHardware();
    public abstract void loadOS();

    public void start(){
        powerOn();
        checkHardware();
        loadOS();
        System.out.println("启动完成...");
    }

}

那么对于电脑ComputerA只需继承该抽象类,分别实现对应的方法,最后调用start即可启动电脑,示例如下:

public class ComputerA extends AbstractComputer{

    @Override
    public void powerOn() {
        System.out.println("开启电源...");
    }

    @Override
    public void checkHardware() {
        System.out.println("检查硬件...");
    }

    @Override
    public void loadOS() {
        System.out.println("启动操作系统...");
    }

}

下面看看具体测试代码:

public class MainTest {

    public static void main(String []args){
        AbstractComputer computer = new ComputerA();
        computer.start();
    }

}

输出如下:

开启电源...
检查硬件...
启动操作系统...
启动完成...

三、模板模式在Android中的应用
1)AsyncTask类

我们在使用AsyncTask的时候,主要实现了其中onPreExecute、doInBackground、onPostExecute等方法,在不同的方法中实现不同的操作,当执行execute方法后,上面三个方法会依次执行。

2)Android中Activity的生命周期等
四、应用场景

1、多个子类具有共有的方法,并且逻辑基本相同;

2、对于某一个复杂的算法,当需要拆解成多个步骤时,有子类来实现每个步骤。

五、参考文献

《大话设计模式》

《Android源码设计模式解析与实战》

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值