设计模式学习之路-模板方法模式

这个模式在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源码:

https://github.com/SingleShu/TemplateMethodModel





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值