程序员、java语言、软件开发、编程、吐槽
面试官:java模板设计模式讲下
程序员:内心慌的一笔啊,平时开发用了模板模式了
但根本没总结,现在面试脑袋一片空白基础准备
java匿名内部类
接口、抽象
回调函数模板模式
就是把样板代码分离出来
具体业务逻辑代码利用回调函数,匿名内部类方式
通俗:模板就是定义一个框架,比如盖楼房,我们定义一个模板:房子要封闭,有门,有窗等等,但是具体要什么样的门,具体什么样的窗,这些并不在模板中具体描述,模板就定义接口或抽象,这个交给子类来具体实现完善,比如门使用程序汪牌防盗门,安安牌门窗等等。代码案例

回调函数
也就是具体子类需要实现的内容,一般业务代码就这么几个活要子类干

这里我设计了一个抽象类实现回调函数
为了方便具体子类不用每个方法必须实现,如有些子类就验证和执行方法就完了
没必要实现后置方法或最终方法

模板方法
定义了一个接口,注意这里入参就是回调函数

具体模板类
入参回调函数,然后利用回调函数的方法把具体模板逻辑搭建起来

客服端代码
实例化模板类,然后调用模板的核心execute方法
注意这里的入参对象是抽象回调类
具体业务这个匿名类去实现就行


总结
模板模式,一般就是前置验证、执行业务、后置验证
模板模式里可以统一打印入参出参日志
模板模式里可以统计每个业务的耗时情况
大家可以根据具体业务增加回调函数的方法,一般可以把业务的名称属性设置下,这样日志打印出具体业务的情况
这里代码我写的比较复杂,可以省去那个抽象回调函数,还可以把回调函数类放到模板类中,定义成一个内部类场景
一般Controller层都可以用模板模式,这样日志、耗时、异常返回信息都可以分离到模板中统一实现了
远程rpc接口
其实需要大量重复样板代码的地方都可以考虑下用模板模式
Spring事务就是经典的模板模式的应用TransactionTemplateTransactionTemplate源码
注意也是回调函数加模板类思路
他的样板代码就是执行逻辑,回滚、提交等动作


java 模板模式核心
一个模板类加回调函数
“我自己是一名老程序员,辞职后在线上做讲师,今年我整理了一份适合2019年学习的Java编程资料干货,从最基础的面向对象到各种框架都有整理,送给每一位初学和进阶中学习Java编程的小伙伴。"
加QQ群:730379855(招募中)
网友评论