【设计模式】合同PDF生成:模板设计模式

场景

最近公司在搞新OA系统,有个比较大的需求就是在线生成合同模板的PDF文件。合同流程大概是这样的:在这里插入图片描述
而生成合同PDF文件这个需求说来也不复杂,其实就是这样:在这里插入图片描述
总的来说就是查询数据,调用接口,保存流,完事。

但其中因为事业部不同,需要填充的参数肯定也不同,而且中间可能会有附加操作。也就是说除了这个需求流程绝对不变,其他中间代码可能会不一样。那这时候,模板设计模式就上场了。

模板设计模式

我理解的模板设计模式其实很简单,就是一个Abstract类包含了公用函数,具体类去实现这个抽象类,override抽象类中的方法就行了,大概实现如下:

Abstract类

public abstract class AbstractContractCreateAction{
	protected abstract void fillContractParam(Map<String,String> fillMap, Map<String, String> tableMap){}
}

   	protected abstract void chooseContract(int contractType){}
   	
   	public String execute(RequestInfo requestInfo){
		getAllDataFromTable();//从表格获取所有数据
		//..其他操作
		chooseContract();
		//..其他操作
		fillContractParam();
		//..其他操作
		createPDF();//保存流
	}

继承Abstract类

public class LawContractCreateAction extends AbstractContractCreateAction{
	@Override
	protected abstract void fillContractParam(Map<String,String> fillMap, Map<String, String> tableMap){
		tableMap.foreach();
		fillMap.foreach();
		//...blablabla
	}

	@Override
	protected abstract void chooseContract(int contractType){
		switch(contractType){
			case 0:
				break;
			case 1:
				break;
			case 2:
				break;
			default:
				break;
		}
		//....blablabla
	}
}
}

这样就大大减少了代码的重复性,关键是IDEA就不会有那么多的黄色波浪线了(原先是写好一个事业部后直接复制文件,再改其中某些函数,这实在有点傻)。并且以后如果流程变了,就只用改Abstract类就可以了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值