绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
秒懂系列:一文讲懂模版模式
2019-12-22 12:43:02

对模版模式有了解吗,由于回答者说话声音太小,我没听见,我决定临阵磨一下枪,马于是我打开了Java小咖秀的公众号,正好近小编正在更新。

面试官走来了,他来了,他来了,他带着一堆问题走来了。

面试官拿着简历,坐下来看着简历。

面试官:做一下自己介绍吧。

小呆: !@#¥!##¥(*&&&%。

面试官:说一下你对模版模式的理解,以及模版模式的优缺点?

小呆:就是在一个抽象父类里定义好流程的框架,在子类中可以按需重写方法的实现,这种模式属于行为型设计模式。

它的uml图:

比如 把 xx 放进冰箱就是模版模式。

这一天韩梅梅和李雷拎着一袋冰淇淋回到家里,于是准备把冰淇淋以及昨天的剩菜放到冰箱里,于是他们现实设计了一个uml图:

public abstract class Template {

public final void packIn() {

    open();
    putIn();
    close();
}

public void open() {
    System.out.println("打开冰箱门!");
}

public abstract void putIn();

public void close(){
    System.out.println("关上冰箱门!");
}
复制代码

}

public class IceCream extends Template {

@Override
public void putIn() {
    System.out.println("把冰淇淋放入下层冰箱~");
}
复制代码

}

public class LeftoverFood extends Template {

@Override
public void putIn() {
    System.out.println("把剩菜放入上层冰箱~");
}
复制代码

}

public class Client {

public static void main(String[] args) {
    Template iceGream = new IceCream();
    iceGream.packIn();

    Template leftoverFood = new LeftoverFood();
    leftoverFood.packIn();
}
复制代码

}

处理结果:

打开冰箱门! 把冰淇淋放入下层冰箱~ 关上冰箱门! 打开冰箱门! 把剩菜放入上层冰箱~ 关上冰箱门!

优点:封装不变部分,可以自己扩展可变部分,提取公共代码,复用性好,便于维护。

缺点:每一个不同的实现就需要新增一个类,随着类的增加,使得系统更臃肿。

面试官:模版模式有什么需要注意的地方吗。

小呆: 一般会在模版方法上加上final关键字,防止子类重写,可以重写的情况除外。

面试官 :你知道这种设计模式在哪些框架中的什么地方有应用到吗。

小呆 : Java中的AbstractList,Spring中的JdbcTemplate。(详细的这里大家可以去看Java和Spring源码)

面试官:那我继续问几个问题。

小呆:...

END 如果小伙伴们对源码有兴趣的话,后面文章和大家一起学习,感谢大家的陪伴。

获取更多精彩 关注我的公众号 <Java小咖秀>

分享好友

分享这个小栈给你的朋友们,一起进步吧。

Kafka
创建时间:2020-05-22 09:55:12
Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • ?
    栈主

小栈成员

查看更多
  • wangdabin1216
  • 小雨滴
  • chenglinjava0501
  • 时间不说话
戳我,来吐槽~