模板模式
概念
将某一个固定的流程,一样的流程进行实现,不同的流程进行实现。注重流程的模式
源码实例
通过模板模式实现一个包饺子的机器,通过放入不同的馅子,生成出不同的饺子。其他的流程都是固定不变的。
抽象模板类
package template;
/**
* @author : freedom
* @Description : 包饺子模板
* @Creation Date: 2019-12-24 7:15 上午
*/
public abstract class MakeDumplingTemplate {
/**
* 包饺子模板过程
*/
public final void createDumpling() {
noodles();
stuffing();
dumpling();
cooking();
}
/**
* 和面
*/
public void noodles() {
System.out.println( "开始和面" );
}
/**
* 活馅
*/
public abstract void stuffing();
/**
* 包饺子
*/
public void dumpling() {
System.out.println( "开始包饺子" );
}
/**
* 煮饺子
*/
public void cooking() {
System.out.println( "开始煮饺子" );
}
}
基于模板的实现类
韭菜鸡蛋饺子
package template;
/**
* @author : freedom
* @Description : 继承包饺子模板实现韭菜鸡蛋馅的饺子
* @Creation Date: 2019-12-24 7:21 上午
*/
public class LeekAggs extends MakeDumplingTemplate {
/**
* 活馅
*/
@Override
public void stuffing() {
System.out.println("韭菜鸡蛋馅");
}
}
猪肉芹菜饺子
package template;
/**
* @author : freedom
* @Description : 继承包饺子模板实现芹菜猪肉馅的饺子
* @Creation Date: 2019-12-24 7:22 上午
*/
public class CeleryPork extends MakeDumplingTemplate {
/**
* 活馅
*/
@Override
public void stuffing() {
System.out.println("芹菜猪肉");
}
}
测试模板类
package template;
/**
* @author : freedom
* @Description : 模板测试类
* @Creation Date: 2019-12-24 7:23 上午
*/
public class DumplingTemplateTest {
public static void main(String[] args) {
/**
* 生成韭菜鸡蛋馅的饺子
*/
LeekAggs leekAggs = new LeekAggs();
leekAggs.createDumpling();
System.out.println("--------------华丽的分割线-----------------" );
/**
* 生成猪肉芹菜馅的饺子
*/
CeleryPork celeryPork = new CeleryPork();
celeryPork.createDumpling();
}
}
```v