首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

JAVA设计方式学习18——模版方法模式

2013-08-11 
JAVA设计模式学习18——模版方法模式模版方法(Template Method)模式:属于类的行为模式,它的用意是定义一个操

JAVA设计模式学习18——模版方法模式
模版方法(Template Method)模式:属于类的行为模式,它的用意是定义一个操作中的算法的骨架,将一些操作延迟到子类中。使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。模版方法模式的类图如下:JAVA设计方式学习18——模版方法模式模版方法模式有两个角色:1、抽象模版(Abstract Template)角色:定义了一个或多个抽象操作,同时定义了一个模版方法,它是一个具体的方法,作为抽象模版的骨架。实际的逻辑在抽象操作中,推迟到子类实现。2、实现模版(Concrete?Template)角色:实现了抽象模版中一个或多个抽象方法。?这里举个模拟计算器的例子来说模版方法模式,我们知道计算器计算的时候首先获取操作数1,然后获取操作数2,再进行加减乘除运算,最后显示在屏幕上,对于计算器来说不管是计算加减乘除那一种,都是要获取两个操作数,计算后再显示。可以建立以下类图模型:JAVA设计方式学习18——模版方法模式
??举例代码如下:

package templateMethod;/** *  *作者:alaric *时间:2013-8-9下午8:14:34 *描述:测试类 */public class Client {/** *作者:alaric *时间:2013-8-9下午8:14:28 *描述: */public static void main(String[] args) {//加AbstractClass c1 = new AddClass();c1.templateMethod();//减AbstractClass c4 = new SubClass();c4.templateMethod();//乘AbstractClass c2 = new MultiClass();c2.templateMethod();//除AbstractClass c3 = new DivClass();c3.templateMethod();}}
?运行结果:结果是:10结果是:6结果是:16结果是:4整个计算过程(取操作数,计算,显示)使用了模版方法模式,模版方法规定程序实现步骤,并且在子类中无法改变,而子类必须实现abstract修饰的抽象方法,不同的实现类可以有不同的实现,这也是模版方法模式的用意。如果你了解策略模式,你会发现在每条算法的封装上很像策略模式,而又不是策略模式,策略模式是利用委派的方法提供不同的算法行为,而模版方法是利用继承来提供不同的算法行为的。

热点排行