模版方法模式在 android中使用

模版方法模式(Template Method):

模版方法模式是类的行为模式。提供一个抽象类,把一部分的逻辑以具体方法或构造子形式实现,然后声明一些抽象方法,迫使子类实现剩余的逻辑代码。不同的子类可以以不同的方式实现这些抽象方法,所以子类实现的剩余逻辑是不同的。另外,模版方法模式是基于继承机制代码复用的技术,它的结构和用法也是面向对象设计的核心。

模版方法模式的简略类图结构如下:

模版方法模式涉及到的几个角色:

1、抽象模版角色

a、声明一个或多个抽象方法,供子类来具体实现,这些方法为“基本方法”,他们是一个顶级逻辑的组成步骤。

b、声明并实现一个模版方法,该方法一般是具体方法,给出了顶级逻辑的框架,具体的逻辑组成步骤推迟到子类实现。

2、具体模版角色

a、实现父类提供的一个或多个抽象方法。

b、每个抽象模版角色都有个具体模版角色对应,而每个具体模版角色都可给出这些对应抽象方法的不同实现。

好了,下面同样以一个实例进行说明模版方法模式的使用。例子是这样的:在android当中,我们经常使用继承机制来为所有的Activity类定义一个基类BaseActivity,这样可以把activity通用的逻辑封装在基类中,实现代码复用的能力,所以我们可以采用模版方法模式来实现,具体的结构类图如下所示。

下面为模版方法模式的核心代码部分:

抽象模版角色:

/**

* @description :

* 抽象模版角色-所有子类的父类

*/

public
abstract class
BaseActivity
extends
Activity {

@Override

protected
void
onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// 基本配置

requestWindowFeature(Window.FEATURE_NO_TITLE);

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

// ...

setContentView(R.layout.activity_base);

// 初始化页面执行

initView();

}

/**

* @description :

* 生命周期方法-初始化页面执行

*/

protected
abstract void
initView();

/**

* @description :

* 生命周期方法-重新进入页面执行

*/

protected
abstract void
resume();

/**

* @description :

* 生命周期方法-隐藏到桌面或被挂起执行

*/

protected
abstract void
pause();

/**

* @description :

* 生命周期方法-离开当前页面执行

*/

protected
abstract void
destroy();

@Override

protected
void
onDestroy() {

super.onDestroy();

destroy();

}

@Override

protected
void
onPause() {

super.onPause();

pause();

}

@Override

protected
void
onResume() {

super.onResume();

resume();

}

}

具体模版方法角色:

/**

* @description :

* 具体模版角色-具体实现抽象方法

*/

public
class
LoadingActivity extends BaseActivity {

@Override

protected
void
initView() {

setContentView(R.layout.activity_loading);

// TODO

log("初始化页面执行");

}

@Override

protected
void
resume() {

log("恢复页面执行");

}

@Override

protected
void
pause() {

log("暂停页面执行");

}

@Override

protected
void
destroy() {

log("页面销毁执行");

}

private
void
log(String msg) {

Log.d("Patterns",
msg);

}

}

下面为模版方法模式实例运行的结果:

好了,到这里访问者模式已经介绍完了,希望对你有帮助,另外,原创作品来之不易,转载请注明谢谢。

点击我下载代码!

技术交流群:179914858

时间: 2024-12-11 02:28:23

模版方法模式在 android中使用的相关文章

设计模式之模版方法模式

1.模版方法模式简介: a.模版方法模式的简单介绍: -  模版方法模式是编程中经常用到模式.它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现.这样,新的子类可以在不改变一个算法结构的前提上重新定义该算法的某些特定步骤. b.核心:处理某个流程中的代码已经都具备,但是其中某个节点的代码暂时不能确定.因此,我们采用模版方法模式,将这个节点的代码实现转移给子类中完成.即:处理步骤父类中定义好,具体实现延迟到子类中定义. 2.简单的代码演示: 在 BankTemplateMethod 类中添加

Java设计模式の模版方法模式

概述 模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现.这就是模板方法模式的用意. 比如定义一个操作中的算法的骨架,将步骤延迟到子类中.模板方法使得子类能够不去改变一个算法的结构即可重定义算法的某些特定步骤. 模式中的角色 抽象类(AbstractClass):实现了模板方法,定义了算法的骨架. 具体类(ConcreteClass):实

设计模式之行为型模式—— 3.6 模版方法模式

<?php /**  * 3.6 模版方法模式  *  定义:  *  定义一个操作中的算法的骨架,而将一些步骤延  *  迟到子类中.模版方法是的子类可以不改变一个  *  算法的结构即可重定义该算法的某些特定步骤.  *  角色:  *  1. 抽象模版方法类  *  职责:定义并实现了一个模版方法.这个模  *    版方法一般是一个具体方法,它给出  *    了一个顶级逻辑的骨架,而逻辑的组  *    成步骤在相应的抽象操作中,推迟到  *    子类实现.顶级逻辑也有可能调用一  

设计模式 模版方法模式 展现程序员的一天

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/26276093 继续设计模式~ 模版方法模式 老套路,先看下定义:定义了一个算法的骨架,而将一些步骤延迟到子类中,模版方法使得子类可以在不改变算法结构的情况下,重新定义算法的步骤. 简单看下定义,模版方法定义了一个算法的步骤,并且允许子类为一个或多个步骤提供实现.定义还算清晰,下面来个例子展示下本公司的上班情况(纯属娱乐,如有雷同,请对号入座).简单描述一下:本公司有程序猿.测试

(4)模版方法模式

(4)模版方法模式 定义:定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤. 类型:行为类模式 类图: 事实上,模版方法是编程中一个经常用到的模式.先来看一个例子,某日,程序员A拿到一个任务:给定一个整数数组,把数组中的数由小到大排序,然后把排序之后的结果打印出来.经过分析之后,这个任务大体上可分为两部分,排序和打印,打印功能好实现,排序就有点麻烦了.但是A有办法,先把打印功能完成,排序功能另找人做. abstract class

JS常用的设计模式(10)——模版方法模式

模式方法是预先定义一组算法,先把算法的不变部分抽象到父类,再将另外一些可变的步骤延迟到子类去实现.听起来有点像工厂模式( 非前面说过的简单工厂模式 ). 最大的区别是,工厂模式的意图是根据子类的实现最终获得一种对象. 而模版方法模式着重于父类对子类的控制. 按GOF的描叙,模版方法导致一种反向的控制结构,这种结构有时被称为“好莱坞法则”,即“别找我们,我们找你”.这指的是一个父类调用一个子类的操作,而不是相反. 一个很常用的场景是在一个公司的项目中,经常由架构师搭好架构,声明出抽象方法.下面的程

机房重构之模版方法模式-组合查询

机房收费系统中,一个比较让人纠结功能就是组合查询,不仅仅是代码比较多,而且大多都是重复的代码,也正是因为如此,才比较适合模版方法模式. 一.基本介绍 模版方式模式是定义一个操作中的算法的骨架,而将步骤延迟到子类中. 模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤. 类图 二.具体实现 1.建立模板父窗体 添加Windows窗体,设计模板界面(如下图),并在模板窗体里写入抽象出来的类和方法的代码. '**************************************

原型模式和模版方法模式

首先我们来了解原型模式 定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 根据定义,我们很明显地知道原型模式的对象是类.通过原型模式,我们可以无限地复制原型的对象 接着我们了解模版方法模式 定义:定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中.模版方法使用使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 其实就是规定完成某件事情需要做多少步,并且规定那些需要你发挥自己的想象.能力根据实际情况去完成的. 综上所述.这两种设计模式的对象不同.原型是一个大的

Chapter 10 模版方法模式

我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模版模式来处理. 模版方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模版方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 模版方法通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势,相当于提供了一个很好的代码复用平台. 当不变和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现.我们通过模版方法模式把这些行为搬移