点击上方 "程序员小乐"关注, 星标或置顶一起成长
每天凌晨00点00分, 第一时间与你相约
每日英文
Try to hold the right hand with your left hand, and gave yourself most simple warmth. we should learn to get it by ourselves instead of craving for warmth from others.
试着用左手握住右手,给了自己最简单的温暖,不再奢求别人的给予,开始学着自己给自己。
每日掏心话
人最大的幸福是有人可以依赖,但人最大的不幸则是过份依赖某个人。
来自:Mazin | 责编:乐乐
链接:my.oschina.net/u/3441184/blog/916670
程序员小乐(ID:study_tech)第 720 次推文 图片来自网络
往日回顾:面试官问我:new 一个对象的过程中发生了什么?我竟然回答不上来...
正文
顾名思义,模板设计模式就是将许多公用的常用的代码封装成一个模板,我们只需要实现不同的业务需求的代码,然后和模板组合在一起,那么就得到完整的逻辑。
在我们的日常开发中,常用的模板模式有两种实现方式:继承和接口回调,下面我们就分别使用这两种方式来实现模板设计模式。
假设一个场景,有一段代码如下所示:
public void doSomething(){
固定代码片段
业务相关代码
固定代码片段
}
如果这段代码在很多地方要使用,并且固定代码比较多,业务相关代码比较少,且比较集中,那么如果我们每次实现一个业务都写下一个完整的流程,那么就会有很多重复代码,使用模板设计模式可以很好的解决这一问题。
是用继承的方式实现:创建一个模板类,将模板代码封装:
public abstract class Templet { public void doTemplet(){ System.out.println("固定代码片段"); //业务逻辑代码 doSomething(); System.out.println("固定代码片段"); } public abstract void doSomething();}
我们需要使用模板的类只需要继承这个模板类,并实现那个抽象方法,那么在调用doTemplet的时候,调用的业务逻辑代码自然就是我们那个子类中的实现了,这样就能实现不同的逻辑使用同一段代码了。
使用回调的方式实现,首先我们定义一个较为通用的接口:
public interface Callback<V,T> {
public V doSomething(T t);
}
我们要使用模板的测试类:
public class Test { public static void main(String[] args) { useTemplet("业务逻辑",new Callback<String, String>() { @Override public String doSomething(String t) { return t; } }); } public static void useTemplet(String str,Callback<String,String> callback){ System.out.println("固定代码"); String result = callback.doSomething(str); System.out.println(result ); System.out.println("固定代码"); }}
这样如果还有其他的代码需要复用模板,那么直接调用useTemplet就可以了。
模板设计模式在框架的设计中使用比较多,例如springmvc的view就是一个典型的模板设计模式。
欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,学习能力的提升上有新的认识,欢迎转发分享给更多人。
欢迎各位读者加入程序员小乐技术群,在公众号后台回复“加群”或者“学习”即可。
猜你还想看
漫谈Serverless、微服务、分布式和单体四种主流软件架构
关注「程序员小乐」,收看更多精彩内容
嘿,你在看吗?