设计模式浅析之--模板方法模式Template Method
2015-05-19 18:17
761 查看
模板模式被应用的比较多,尤其是在框架设计中,框架的作用在很大程度上就是为你创建一个方便的开发程序的模板,而你只需要实现模板中的一些接口就能完成一个复杂的任务。模板的核心是,大的逻辑已经定义,你要做的就是实现一些具体的步骤,不同的人实现这些步骤的方法也会有所不同,从而模板的行为也会表现出具体的区别。
模板的结构:
1.抽象模板:抽象模板中,有抽象的方法(等待子类去实现),也可以有具体的实现方法;定义了完整的框架后,方法的调用顺序通常已经确定了,但是还是会定义一个抽象的方法去给子类实现。通过调用抽象类的抽象方法来实现对子类的调用。
2.具体模板实现类:实现抽象模板中的抽象方法,实现具体的功能,组成一个完整的逻辑。
下面是一个具体的示例:
示例类图
示例序列图
计算器的抽象类
加法计算器
减法计算器
下面是测试类
控制台console打印:
35
-3
模板的结构:
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
相关文章推荐
- Java设计模式 Design Pattern:模板方法 Template Method
- 设计模式-行为设计模式:模板方法设计模式 TemplateMethod
- Java设计模式 Design Pattern:模板方法 Template Method
- 乐在其中设计模式(C#) - 模板方法模式(Template Method Pattern)
- c++设计模式----模板方法template method
- 设计模式19:Template Method Pattern (模板方法模式)
- JAVA设计模式之 模板方法模式【Template Method Pattern】
- 设计模式入门之模板方法模式TemplateMethod
- 二十四种设计模式:模板方法模式(Template Method Pattern)
- 设计模式 - Template Method Pattern(模板方法模式)
- 设计模式:模板方法模式-template method
- java设计模式之模板方法模式Template method
- java_设计模式_模板方法模式_Template Method Pattern(2016-08-11)
- 设计模式 -- 模板方法模式 TemplateMethod
- 设计模式之22 - 模板方法Template method
- 设计模式之模板方法Template Method
- 设计模式9 - 模板方法模式【Template Method Pattern】
- 设计模式之模板方法模式---template method
- 设计模式——模板方法模式【Template Method Pattern】
- 设计模式 - Template Method Pattern(模板方法模式)