本篇内容主要讲解“Java设计模式中的责任链模式的实现方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java设计模式中的责任链模式的实现方法”吧!责任链模式(Chain of Responsibility Pattern)是一种是行为型设计模式,它为请求创建了一个处理对象的链。其链中每一个节点都看作是一个对象,每个节点处理的请求均不同,且内部自动维护一个下一节点对象。当一个请求从链式的首端发出时,会沿着链的路径依次传递给每一个节点对象,直至有对象处理这个请求为止。责任链模式主要解决了发起请求和具体处理请求的过程解耦,职责链上的处理者负责处理请求,用户只需将请求发送到职责链上即可,无需关心请求的处理细节和请求的传递。责任链模式的实现主要有四个要素:处理器抽象类,具体的处理器实现类,保存处理器信息,处理执行。伪代码示例:链表形式的责任链实现的具体代码示例:pipeline管道保存了通道所有处理器信息,创建channel时自动创建一个专有的pipeline,入站事件和出站事件会调用pipeline上的处理器入站事件:通常指IO线程生成了入站数据(通俗理解:从socket底层自己往上冒上来的事件都是入站)
比如EventLoop收到selector的OP_READ事件,入站处理器调用socketChannel.read(ByteBuffer)接受到数据后,这将导致通道的ChannelPipeline中包含的下一个中的channelRead方法被调用出站事件:通常指IO线程执行实际的输出操作(通俗理解:想主动往socket底层操作的事件的都是出站)
比如bind方法用意是请求server socket绑定到给定的SocketAddress,这将导致通道的ChannelPipeline中包含的下一个出站处理器中的bind方法被调用ChannelHandler:用于处理IO事件或拦截IO操作,并转发到ChannelPipeline中的下一个处理器。这个顶级接口定义功能很弱,事件使用时会实现下面两大子接口:处理入站IO事件的ChannelInBoundHandler,处理出站IO事件的ChannelOutBoundHandler适配器:为了开发的方便,避免所有的handler去实现一遍接口方法,Netty提供了简单的实现类:ChannelInBoundHandlerAdapter处理入站IO事件,
ChannelOutBoun 香港云主机dHandlerAdapter处理出站IO事件,
ChannelDuplexHandler支持同时处理入站和出站事件ChannelHandlerContext:实际存储在Pipeline中的对象并非ChannelHandler,而是上下文对象,将handler包裹在上下文对象中,通过上下文属的ChannelPipeline交互,向上或向下传递事件或者修改pipeline都是通过上下文对象。ChannelPipeline是线程安全的,ChannelHandler可以在任何时候添加或删除。
例如,可以在即将交换敏感信息时插入加密处理程序,并在交换后删除。
一般操作,初始化的时候增加进去,较少删除。Pipeline中管理handler的API:用户在管道中有一个或多个channelhandler来接受IO事件和请求IO操作
一个典型的服务器会在每个通道的管道中都有以下处理程序,但是根据协议和业务逻辑的复杂性和特征,可能会有所不同:
协议解码器 – 将二进制数据转换为Java对象
协议编码器 – 将Java对象转换成二进制数据
业务逻辑处理器 – 执行实际的业务逻辑
责任链模式的运用,保证了Netty的高度可扩展性到此,相信大家对“Java设计模式中的责任链模式的实现方法”有了更深的了解,不妨来实际操作一番吧!这里是开发云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
本篇内容介绍了“怎么用Gitlab自建服务器仓库”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在教程开始之前,是不是很多人搜索过:Windows下GitLab服…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。