查看原文
其他

面试官:说说你对模板设计模式的理解,编码中该如何使用呢?

作者:Mazin

来源:https://urlify.cn/vIbeaq


顾名思义,模板设计模式就是将许多公用的常用的代码封装成一个模板,我们只需要实现不同的业务需求的代码,然后和模板组合在一起,那么就得到完整的逻辑。


在我们的日常开发中,常用的模板模式有两种实现方式:继承和接口回调,下面我们就分别使用这两种方式来实现模板设计模式。


假设一个场景,有一段代码如下所示:
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就是一个典型的模板设计模式。

热文推荐

学霸因“闲鱼”被骗,决定反击,攻破网络诈骗后台...

腹黑 HR 黑话大全:那些残忍的潜台词!

面试官:如何设计一个红包系统?你确定它能扛住100亿次请求吗?




觉得不错,请给个「在看」

分享给你的朋友!


- End -

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存