你真的真的明白HttpClient的实现原理了吗?
|
关于静态方法的使用,这下清楚了吧,三妹?” 看着三妹点点头,我欣慰地笑了。 “哥,我想到了一个问题,为什么 main 方法是静态的啊?”没想到,三妹串联知识点的功力还是不错的。 “如果 main 方法不是静态的,就意味着 Java 虚拟机在执行的时候需要先创建一个对象才能调用 main 方法,而 main 方法作为程序的入口,创建一个额外的对象显得非常多余。”我不假思索的回答令三妹感到非常的钦佩。
“java.lang.Math 类的几乎所有方法都是静态的,可以直接通过类名来调用,不需要创建类的对象。” Subject类是主题,它把所有对观察者对象的引用文件存在了一个集合里,每个主题都可以有任何数量的观察者。它是一个抽象主题,提供了一个可以增加和删除观察者对象的接口。 Observer类是抽象观察者,为所有的具体观察者定义一个接口,在得到主题的通知时更新自己。 ConcreteSubject类是具体主题,将有关状态存入具体观察者对象,在具体主题内部状态改变时,给所有登记过的观察者发出通知。 ConcreteObserver是具体观察者,实现抽象观察者角色所要求的更新接口,以便使本身的状态与主题的状态相协同。 发布订阅模式
举个生活中的例子,比如我们想要订阅一份国家地理杂志,一般需要我们先向邮局申请(付钱),告诉邮局我要订阅这份杂志,苦等数日杂志终于印刷好了,这个时候我们不会直接跑到印刷厂里去,而是等印刷厂将杂志送给邮局,然后邮局才会慢吞吞地将杂志送到家(推模式),如果你实在等不及了跑到邮局直接取杂志,恭喜你学会了“拉模式”。 我心里咕噜:怎么突然有个会,会不会是因为看了我的简历觉得我菜,故意找了一个借口,待会肯定让 HR 过来说面试太忙今天不面了。 果不其然,门开了,一位头发油油的满脸是痘的中年大叔向我走来。 我心想:这不会就是传说中的架构师吧。看来还是很看重我啊,第一面就派一个架构师来面我,我得好好表现一下。 架构师:你就是xxx 吧,刚才有个会议我来晚了,我们开始面试吧,一分钟简单介绍一下自己。 果然没有猜错,给我一分钟介绍,幸亏之前是按照一分钟准备的,我要开始背了。 我张嘴一笑,露出自信的大牙:尊敬的架构师你好,我是 xxx,之前在上一家公司担任…… 架构师点点头:很好。我看你简历上写了很多技能,你挑一个你最熟悉的。 我有点凌乱了:架构师怎么不按套路出牌,应该会问我 HashMap 的源码,Java 锁的机制等。我想了想我比较熟悉的:Java 集合类、JVM、多线程、spring 全家桶,我如果说这些肯定会被架构师鄙视,差点忘了我还有一个杀手锏:设计模式。 我拍了拍胸脯:架构师你好,我之前参与项目重构用到了很多设计模式,要不你问我设计模式的东西吧。 架构师:那你说说观察者模式和发布订阅模式的区别? 我脑海立刻闪现《Head First设计模式》里面讲的:Publishers + Subscribers = Observer Pattern,问这么简单的问题难道是看不起我吗。 我内心无比激动,嘴角露出胜利者的微笑:亲爱的架构师,我之前看过一本书《Head First 设计模式》,这里面讲的观察者模式和发布订阅模式是等同关系的,它们是一回事。 架构师也笑了:不,它们不一样。 此刻我慌了,双手有点轻微颤抖,我哪里错了,它们明明是相等的。 架构师:我待会还有个会,要不今天的面试先到这里,你回家等消息吧。 回家后我心不甘,决定要把观察者模式和发布订阅模式搞清楚,通过一顿谷歌后我写了下面这些笔记: 观察者模式
观察者模式一般有观察者和被观察者。举个例子:大家在学校上自习的时候,等老师走了有些人会玩手机、吃零食、交头接耳找隔壁妹妹聊天,但是被老师发现可就不好了,所以大家想了一个招,让坐在最后排的同学帮忙“放风”,老师一来就给大家一个手势通知大家,大家就继续装好好学生(哈嘿)。 (编辑:周口站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
