美文网首页
12 Android常见设计模式:模板方法模式

12 Android常见设计模式:模板方法模式

作者: 彩虹_直至黑白 | 来源:发表于2021-12-23 10:28 被阅读0次

前言

在面向对象开发过程中,通常会遇到这样的一个问题,我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序,但是,某些步骤的具体实现是未知的,或者说某些步骤的实现是会随着环境的变化而改变,这类问题的解决方案就是我们要讲的模板方法模式。

定义

定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

使用场景

  1. 多个子类有共有的方法,并且逻辑基本相同时。
  2. 重要&复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能则由各个子类实现。
  3. 重构时,模板方法模式是一个经常使用的模式,把相同的代码抽取到父类中,然后通过钩子函数约束其行为。

简单示例

模板方法实际上是封装一个固定流程,就像是一套执行模板一样,第一步该做什么,第二步该做什么都已经在抽象类中定义好。而子类可以有不同的算法实现,在框架不被修改的情况下实现某些步骤的算法替换,下面以打开计算机这个动作来简单演示一下模板方法。打开计算机的整个过程都是相对固定的,首先启动计算机电源,计算机检测自身状态没有问题时将进入操作系统,对用户进行验证之后即可登录计算机,下面我们使用模板方法来模拟一下这个过程:

public abstract class AbstractComputer {

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

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

    protected void loadOS() {
        System.out.println("载入操作系统");
    }

    protected void login() {
        System.out.println("小白的计算机无验证,直接进入系统");
    }

    /**
     * 启动计算机方法,步骤固定为开启电源、系统检查、加载操作系统、用户登录。
       该方法为final,防止算法框架被覆写
     */
    public final void startUp() {
        System.out.println("------ 开机 START ------");
        powerOn();
        checkHardware();
        loadOS();
        login();
        System.out.println("------ 关机 END ------");
    }
}

程序员的计算机

public class CoderComputer extends AbstractComputer {

    @Override
    protected void login() {
        System.out.println("程序员只需要进行用户和密码验证就可以了");
    }
}

军用计算机

public class MilitaryComputer extends AbstractComputer {

    @Override
    protected void checkHardware() {
        super.checkHardware();
        System.out.println("检查硬件防火墙");
    }

    @Override
    protected void login() {
        System.out.println("进行指纹识别等复杂的用户验证");
    }
}

测试代码

public class Test {

    public static void main(String[] args) {
        AbstractComputer comp = new CoderComputer();
        comp.startUp();
        comp = new MilitaryComputer();
        comp.startUp();
  }
}

总结

模板方法模式用4个字概括就是:流程封装。也就是把某个固定的流程封装到一个final函数中,并且让子类能够定制这个流程中的某些或者所有步骤,这就要求父类提取共用的代码,提升代码的复用率,同时也带来了更好的可扩展性。

相关文章

  • Android 模板方法模式

    Android 设计模式系列文章 Android 23种设计模式 前言 模板方法模式是一种我们十分常见的模式,比如...

  • 11.8设计模式-模板模式-详解

    设计模式-模式模式 模板方法模式详解 模板方法模式在android中的实际运用 1.模板方法模式详解 2.模板方法...

  • 12 Android常见设计模式:模板方法模式

    前言 在面向对象开发过程中,通常会遇到这样的一个问题,我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序,...

  • 设计模式 - 模板方法模式

    模板方法模式的结构 常见模板方法:HttpServlet, Android Activity生命周期

  • 设计模式

    常见的设计模式有哪些? 常见的工厂模式,代理模式,模板方法模式,责任链模式,单例模式,包装设计模式,策略模式等。手...

  • JAVA模板方法设计模式——Java设计模式,写漂亮的代码——

    Java设计模式,写漂亮的代码 ————模板方法设计模式 简介: 模板方法设计模式是Java设计模式中很简单、应用...

  • 24 Java设计模式系列-模板方法模式

    模板方法模式 模板方法模式是非常常见的设计模式之一,写个笔记,记录一下我的学习过程和心得。 首先了解一些模板方法模...

  • 设计模式系列-模板方法模式

    JAVA设计模式系列: 单例模式 观察者模式 模板方法模式 模板方法模式 定义 模板方法模式在一个方法中定义了算法...

  • 设计模式

    Android开发中常见的设计模式Java设计模式:23种设计模式全面解析(超级详细)Android的设计模式-设...

  • 设计模式之十——模板方法模式

    原文传送门 1 介绍 模板方法模式是类的行为模式。 1.1 什么是模板方法模式 模板方法模式是所有模式中最为常见的...

网友评论

      本文标题:12 Android常见设计模式:模板方法模式

      本文链接:https://www.haomeiwen.com/subject/gpdpfrtx.html