Hessian源码分析之设计模式篇(八)
来源:互联网 发布:地瓜干 知乎 编辑:程序博客网 时间:2024/06/08 19:43
Hessian源码已经分析完了,在Hessian中主要使用到了两个设计模式,一个是策略模式,一个是模板方法模式
我们先来看看策略模式
在Hessian中向流中写数据都是通过Serializer接口的writeObject方法来实现的,而根据写出的对象的不同对应着很多的具体的实现类,类图如下(只画出了部分实现类)
因为对于不同类型的参数写出到输出流的方式是不一样的,如果用if...else...来实现的话,每增加一种新的类型都要修改,不仅容易出错而且不易维护
策略模式的使用场景如下
多个类只有在算法或者行为上稍有不同
策略模式的优点如下
1、策略可以自由切换:只要实现抽象策略,就可以成为策略家族的一个成员,通过角色对其封装,保证对外提供“可自由切换”的策略
2、避免使用多重条件判断:多重条件判断极容易出错,尤其是在具体策略逻辑复杂的情况下
3、扩展性良好:在现有的系统中增加一个策略只要实现接口就可以了,其他都不用修改,类似于一个可反复拆卸的插件
模板方法模式
HessianOutput类的call()方法负责将rpc调用过程中的方法信息和参数信息写到流中,代码如下
public void call(String method, Object []args) throws IOException { int length = args != null ? args.length : 0; startCall(method, length); for (int i = 0; i < length; i++) writeObject(args[i]); completeCall(); }对于所有的rpc调用在写出方法信息上和写结尾信息上都是没有区别的,只有在写出具体参数的实现是不一样的,所以Hessian将写出方法信息放到了startCall方法中,结尾信息放到了completeCall()方法中,而具体的参数放到了writeObject()方法放到具体的子类中实现
模板方法的使用场景如下
1、多个子类有公有的方法,并且逻辑基本相同时
2、重要,复杂的算法,可以把核心算法设计为模板放方法,周边的相关细节功能由各个子类实现
模板方法的优点如下
1、封装不变部分,扩展可变部分
2、提取公共部分代码,便于维护
3、行为由父类控制,子类提供具体实现
阅读全文
0 0
- Hessian源码分析之设计模式篇(八)
- Dubbo系列(八)Dubbo源码分析之Dubbo中采用的设计模式
- 设计模式之----建造者模式(AlertDialog源码分析)
- contiki 源码分析之其他(八)
- kubenetes源码分析之DNS(八)
- hessian源码分析(一)------架构
- Hessian源码分析(二)------ HessianProxy
- Hessian源码分析(三)------ HessianSkeleton
- hessian源码分析(一)------架构
- Hessian源码分析(二)------ HessianProxy
- Hessian源码分析(三)------ HessianSkeleton
- hessian源码分析(一)------架构
- hessian源码分析
- hessian源码分析-服务器端
- Hessian源码分析--HessianProxyFactory
- Hessian源码分析--HessianProxy
- Hessian源码分析--HessianServlet
- Hessian源码分析--HessianSkeleton
- 判断Linux环境下文件是否还在变化的脚本
- Context namespace element xxx and its parser class [org.springframework.context.annotat Dubbo
- POJ1743 Musical Theme(后缀数组,高度数组分组)
- 不同服务器数据库之间的数据操作
- python的map函数使用
- Hessian源码分析之设计模式篇(八)
- [AOP] 7. 一些自定义的Aspect
- rabbitmq-c++(SimpleAmqpClient) 笔记代码三
- Java中abstract 类总结
- C编译器、链接器、加载器详解
- OpenCV学习之图像尺寸变换
- 模板--大位数加减乘除
- java基础总结一(Java概述、环境变量、注释、关键字、标识符、常量)
- 设计模式之禅笔记-建造者模式