Netty 采用了哪些设计模式?
Netty 采用了哪些设计模式?
回答重点
Netty 作为许多中间件的底层网络通讯框架,内部设计使用了很多的设计模式:
1)策略模式
例如,Netty 提供了多种 EventLoopGroup 实现(如 NioEventLoopGroup、EpollEventLoopGroup),可以根据不同的操作系统和需求选择不同的实现。
2)单例模式
我们在面试鸭设计模式题库中提到池化设计经常就需要用到单例模式,Netty 的 PooledByteBufAllocator.DEFAULT 就是一个单例实例,用于全局共享的内存池分配器。
3)工厂模式
Bootstrap 和 ServerBootstrap 在创建 Channel 的时候,可以根据传入的 Class 参数来构建对应的 Channel,这个就是工厂模式的一个实现。
4)责任链模式
Netty 中的 ChannelPipeline 和 ChannelHandler 就是责任链模式的典型应用。ChannelPipeline 是一个链式结构,包含了多个 ChannelHandler,每个 ChannelHandler 负责处理特定类型的事件或数据。当一个事件被触发时,它会沿着管道传递,直到被某个处理器处理。
5)建造者模式
Netty 的 Bootstrap 和 ServerBootstrap 类采用了建造者模式,用于配置和创建客户端和服务器实例。通过链式调用的方式,用户可以方便地配置各种参数,并最终调用 bind 或 connect 方法来启动服务。
6)装饰者模式
ByteBuf 实现了装饰器模式。不同的 ByteBuf 实现类可以相互包装,以添加新的功能。
Comments