在编程过程中,会有这样的情况:一个模块下的几个功能,可以分几个相同的工序,则利用模版方法,可以将这些工序提炼出来,而每个工序的具体实现,推迟到子类中实现。
类图
1. 在AbstractClass类中,存在一个模版方法,是一个普通方法,实现了一类算法的骨架,定义了工序的执行顺序
2. ConcreateClass类实现了父类中抽象出的一系列工序操作
特点
- 个人理解,模版方法主要针对于同一类算法中,不同工序的实现
- 将算法中不变的逻辑提取,封装到模版方法中,而改变的逻辑,定义出抽象工序,具体实现在下沉到子类
代码
/************模版方法**************/
public abstract AbstractClass
{
public void templetMethod()
{
operation2();
operation1();
}
public abstract operation1();
public abstract operation2();
}
/***********工序实现***************/
public ConcreateClass extrends AbstractClass
{
public void operation1()
{
System.out.println("我是1");
}
public void operation2()
{
System.out.println("我是2");
}
}