1、facade模式(外观模式)
JDK的SocketChannel和ServerSocketChannel没有统一的Channel接口供业务开发者使用,对于用户而言,没有统一的操作视图,使用起来不方便。而Netty重新定义了Channel接口,采用facade模式进行封装,将网络io操作,网络io相关联的其他操作封装起来,统一对外提供。
参考:https://www.cnblogs.com/lwbqqyumidi/p/3754251.html
2、观察者模式
ChannelFuture中有个重要的addListener方法,会添加特定的监听器到future中,这些监听器会在future isDone返回true的时候立刻被通知。
3、Reactor模式(反应器模式)
用于解决多用户访问并发问题。传统线程池模式:来一个客人(请求)去一个服务员(线程),当客人点菜时,服务员什么都不干,处于阻塞状态。Reactor模式:当客人点菜的时候,服务员去招呼其他客人,客人点好菜后,直接把服务员招呼过来。
反应器模式与观察者模式在某方面极为相似:当一个主体发生改变时,所有附属体都能得到通知。不同之处在于,观察者模式与单个事件关联,反应器模式与多个事件关联。
Netty线程模型中用到了Reactor模式,NioEventLoop中有selector。
4、责任链模式
Netty的ChannelPipeline和ChannelHandler机制类似于Servlet和Filter过滤器,这类拦截器实际上是责任链模式的一种变形。