博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式学习之路-模板方法模式
阅读量:4165 次
发布时间:2019-05-26

本文共 1420 字,大约阅读时间需要 4 分钟。

这个模式在Android中是可以用到的,当我们要完成某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理。

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

模板模式方法的相关UML类图。

基本代码

abstract class AbstractClass{ public void Method(){  //算法中与特定的子类的关系  PrimitiveOperation(); } public abstract void PrimitiveOpration();}
class ConcreteClass  extends AbstractClass{ @Override public void PrimitiveOperation(){  //具体子类的详细细节处理 }}
这个模板模式理解起来很简单,那么运用就更简单了。

举个例子,比如有一套试卷,两个学生来完成,那么只需要设计一个试卷的模板就可以了。直接上代码吧。

package com.abings.templatemethod.TemplateMethod;import android.util.Log;/** * Created by Shuwen 2016/9/2. */public abstract class TestPaper {    /**     *该方法是UML图中的Method()     *@author Shuwen     *created at 2016/9/2 16:42     */    public void Test1(){        Log.i("TAG00","选择题1,毛浙东多大了?[] A.100岁  B.不知道 C.万岁");        Log.i("TAG00","答案:"+answer1());    }    public void Test2(){        Log.i("TAG00","选择题2,妈妈多大了?[] A.34岁  B.不知道 C.万岁");        Log.i("TAG00","答案:"+answer2());    }    /**     *算法中与特定的子类的关系     *@author Shuwen     *created at 2016/9/2 16:43     */    protected abstract String answer2();    protected abstract String answer1();}
package com.abings.templatemethod.TemplateMethod;/** * Created by HaomingXu on 2016/9/2. */public class StuA extends TestPaper {    @Override    protected String answer2() {        return "A";    }    @Override    protected String answer1() {        return "B";    }}
最后附上git源码:

你可能感兴趣的文章
微信公众平台基础配置
查看>>
jpa 和 hibernate 的联系
查看>>
SpringBoot之@SpringBootApplication注解
查看>>
ajax 传JSON 写法
查看>>
SpringBoot之web发展史
查看>>
SpringBoot之开发web页面
查看>>
SpringBoot之快速部署
查看>>
springBoot之jar包在后台(运行:编写start、stop脚本)
查看>>
redis学习
查看>>
SpringBoot之application.properties文件能配置的属性
查看>>
javaWeb监听器、过滤器、拦截器
查看>>
RESTFUL风格的接口
查看>>
后台参数验证配置
查看>>
SpringBoot之外置Tomcat配置
查看>>
java 删除 list 中的元素
查看>>
idea启动优化
查看>>
java发展史
查看>>
Java内存区域
查看>>
数据库与模式的区别
查看>>
Sql随机取数据
查看>>