您的位置:首页 > 其它

设计模式浅析之--模板方法模式Template Method

2015-05-19 18:17 761 查看
模板模式被应用的比较多,尤其是在框架设计中,框架的作用在很大程度上就是为你创建一个方便的开发程序的模板,而你只需要实现模板中的一些接口就能完成一个复杂的任务。模板的核心是,大的逻辑已经定义,你要做的就是实现一些具体的步骤,不同的人实现这些步骤的方法也会有所不同,从而模板的行为也会表现出具体的区别。

模板的结构:

1.抽象模板:抽象模板中,有抽象的方法(等待子类去实现),也可以有具体的实现方法;定义了完整的框架后,方法的调用顺序通常已经确定了,但是还是会定义一个抽象的方法去给子类实现。通过调用抽象类的抽象方法来实现对子类的调用。

2.具体模板实现类:实现抽象模板中的抽象方法,实现具体的功能,组成一个完整的逻辑。

下面是一个具体的示例:

示例类图



示例序列图



计算器的抽象类

public abstract class AbstractCaculator {

/**
* 主方法 ,实现对本类中其它方法的调用
* @param exp
* @param opt
* @return
*/
public final int calculate(String exp,String opt)
{
int[] array = split(exp,opt);
return calculate(array);
}

/**被子类重写的方法*/
public abstract int calculate(int[] array);

public int[] split(String exp,String opt)
{
String[] array = exp.split(opt);
int[] intArray = new int[array.length];
for(int i =0;i<array.length;i++)
{
intArray[i]=Integer.parseInt(array[i]);
}
return intArray;
}
}


加法计算器

public class PlusCalculator extends AbstractCaculator {

//实现了父类AbstractCaculator中的抽象方法
public int calculate(int[] array) {
int result = 0;
for(int i =0;i<array.length;i++)
{
result += array[i];
}
return result;
}

}


减法计算器

public class MinusCalculator extends AbstractCaculator {
//实现了父类AbstractCaculator中的抽象方法
public int calculate(int[] array) {
int result = array[0];
for(int i =1;i<array.length;i++)
{
result -= array[i];
}
return result;
}

}


下面是测试类

public class Main {
public static void main(String[] args) {
//加法计算器
String exp="9+9+9+8";
AbstractCaculator calculator = new PlusCalculator();
int result = calculator.calculate(exp, "\\+");
System.out.println(result);

//减法计算器
AbstractCaculator c = new MinusCalculator();
int r = c.calculate("5-2-1-5", "\\-");
System.out.println(r);
}
}


控制台console打印:

35

-3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: