Java 之 23 种设计模式解析——14、模板方法模式(Template Method)

14、模板方法模式(Template Method)

解释一下模板方法模式,就是指:一个抽象类中,有一个主方法,再定义1...n个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用,先看个关系图:

就是在AbstractCalculator类中定义一个主方法calculate,calculate()调用spilt()等,Plus和Minus分别继承AbstractCalculator类,通过对AbstractCalculator的调用实现对子类的调用,看下面的例子:

1. public abstract class AbstractCalculator {
2.
3.	/*主方法,实现对本类其它方法的调用*/
4.	public final int calculate(String exp,String opt){
5.	int array[] = split(exp,opt);
6.	return calculate(array[0],array[1]);
7.		}
8.
9.	/*被子类重写的方法*/
10.	abstract public int calculate(int num1,int num2);
11.
12.	public int[] split(String exp,String opt){
13.	String array[] = exp.split(opt);
14.	int arrayInt[] = new int[2];
15.	arrayInt[0] = Integer.parseInt(array[0]);
16.	arrayInt[1] = Integer.parseInt(array[1]);
17.	return arrayInt;
18.	}
19. }
1. public class Plus extends AbstractCalculator {
2.
3.	@Override
4.	public int calculate(int num1,int num2) {
5.	return num1 + num2;
6.		}
7.	}	

测试类:

1. public class StrategyTest {
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和"\\+"做参数,调用AbstractCalculator类里的calculate(String,String)方法,在calculate(String,String)里调用同类的split(),之后再调用calculate(int ,int)方法,从这个方法进入到子类中,执行完return num1 + num2后,将值返回到AbstractCalculator类,赋给result,打印出来。正好验证了我们开头的思路。

目录:(点击进入相应页面)

概述、六大原则

一、创建模式

0、简单工厂模式

1.工厂方法模式(Factory Method)

2、抽象工厂模式

3、单例模式(Singleton)

4、建造者模式(Builder)

5、原型模式(Prototype)

二、结构模式(7种)

6、适配器模式

7、装饰模式(Decorator)

8、代理模式(Proxy)

9、外观模式(Facade)

10、桥接模式(Bridge)

11、组合模式(Composite

12、享元模式(Flyweight)

三、关系模式(11种)

13、策略模式(strategy)

14、模板方法模式(Template Method)

15、观察者模式(Observer)

16、迭代子模式(Iterator)

17、责任链模式(Chain of Responsibility)

18、命令模式(Command)

19、备忘录模式(Memento

20、状态模式(State)

21、访问者模式(Visitor)

22、中介者模式(Mediator)

23、解释器模式(Interpreter)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值