每日一题Dubbo源码使用了哪些设计模式

Posted 学亮编程手记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一题Dubbo源码使用了哪些设计模式相关的知识,希望对你有一定的参考价值。

A、工厂模式。ExtenstionLoader.getExtenstionLoader(Protocol.class).getAdaptiveExtenstion()

B、装饰器模式+责任链。以provider的调用链为例,具体调用链代码是在protocolFilterWrapper的buildInvokeChain完成的,将注解中含有group=provider的Filter实现,调用顺序为EchoFilter -> ClassLoaderFilter -> GenericFilter -> ContextFilter -> ExceptionFilter -> TimeoutFilter -> MonitorFilter -> TraceFilter。装饰器模式和责任链混合使用,Echo是回声测试请求,ClassLoaderFilter则只是在其主功能上添加了功能。

C、观察者模式。provider启动时需要与注册中心交互,先注册自己的服务,再订阅自己的服务,订阅时采用了观察者模式,注册中心每5s定时检查是否有服务更新,有更新则向服务提供者发送1个notify消息后即可运行NotifyListener的notity方法,执行监听器方法。

D、动态代理模式。扩展JDK的ExtensionLoaderdeAdaptive实现,根据调用阶段动态参数决定调用哪个类,生成代理类的代码是ExtensionLoader的createAdaptiveExtenstionClassLoader方法。



劝学警言

身处信息爆炸时代,知识浩瀚如海洋。

然,如同图书馆,你可以入门,但不代表你就拥有它。

且,学而不思则罔,思而不学则殆;

学贵有恒,更需注重方式方法。切记三字箴言:恒、慢、悟——

恒:坚持不懈!最忌讳的就是三天打鱼两天晒网,一曝十寒;

慢:精雕细琢!慢工出细活,理论知识一定要吃透,知其所以然;

悟:明辨慎思!要善于固化知识,一定要有自己的理解,否则就如同将他人吐在地上的吃过的甘蔗,再捡起来嚼,味同嚼蜡一般,无任何滋味可言。

送君一句话:殚精竭虑,不如须臾之所学也。

愿君,好好学习,天天向上!

共勉之!






以上是关于每日一题Dubbo源码使用了哪些设计模式的主要内容,如果未能解决你的问题,请参考以下文章

爱创课堂每日一题第二十八天你觉得jQuery或zepto源码有哪些写的好的地方?

每日一题:?面向对象的特征有哪些?

老男孩教育每日一题-第87天-Nginx需要优化哪些内容?

2018/5/19面试题目整理(每日一题)

爱创课堂每日一题101天-哪些操作会造成内存泄漏?

每日一题622. 设计循环队列