博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模板方法模式-Template Method
阅读量:6209 次
发布时间:2019-06-21

本文共 1607 字,大约阅读时间需要 5 分钟。

模板方法模式是指:一个抽象类中,有一个主方法(一般为final),再定义其他抽象的或是具体的方法,由主方法来调用这些方法,然后定义其子类,重写其抽象方法,通过调用抽象类,实现对子类的调用

 

先定义一个抽象的计算器类:

1 public abstract class AbstractCalculator {   2        3     public final int calculate(String exp,String opt){   4         int array[] = split(exp,opt);   5         return calculate(array[0],array[1]);   6     }   7        8     abstract public int calculate(int a,int b);   9 10     public int[] split(String exp,String splitor){  11         String array[] = exp.split(splitor);  12         if(array.length != 2)13             throw new RuntimeException("error");14 15         int arrayInt[] = new int[2];  16         arrayInt[0] = Integer.parseInt(array[0]);  17         arrayInt[1] = Integer.parseInt(array[1]);  18         return arrayInt;  19     }  20 }

加法类:

1 public class Plus extends AbstractCalculator {  2   3     @Override  4     public int calculate(int a,int b) {  5         return a + b;  6     }  7 }

减法类:

1 public class Minus extends AbstractCalculator {  2   3     @Override  4     public int calculate(int a, int b) {  5         return a - b;  6     }  7 }

测试类:

1 public class Main {   2    3     public static void main(String[] args) {   4         String exp = "8+8";   5         AbstractCalculator cal = new Plus();   6         int result = cal.calculate(exp, "\\+");   7         System.out.println(result); 8  9         exp = "8-8";10         cal = new Minus();  11         result = cal.calculate(exp, "-");  12         System.out.println(result);  13     }  14 }

程序执行结果:

160

模板方法即是:在类本身无法实现或者各子类有不同的实现方式时,将方法抽象化暴露给子类去实现。

转载于:https://www.cnblogs.com/joshua-aw/p/6048873.html

你可能感兴趣的文章
并行计算之Memory barrier(内存
查看>>
CentOS更换源和软件更新操作
查看>>
生成 验证验证码
查看>>
Pessimistic and optimistic locking
查看>>
iframe 样式控制
查看>>
读《The Mythical Man-Month》有感
查看>>
hadoop2 作业执行过程之yarn调度执行
查看>>
POJ3281 Dining
查看>>
ios开发教程之申请更多后台时间
查看>>
BZOJ 1087 互不侵犯King 状态压缩DP
查看>>
Linux特殊符号及基础正则表达式
查看>>
页面广告飘窗
查看>>
MySQL性能优化的最佳20+条经验 【转】
查看>>
自适应滤波:矩阵求逆
查看>>
SVN--从本地检出项目至服务器报错--禁止访问
查看>>
[LeetCode] Remove Invalid Parentheses
查看>>
3年外包码农近期烦心事
查看>>
如何用Fritzing实现元器件自定义接线图
查看>>
Educational Codeforces Round 37-E.Connected Components?题解
查看>>
4.13.2
查看>>