暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Netty中的设计模式(四)策略模式

码农的修炼之道 2018-09-08
567

我们之前的文章介绍过策略模式的基本情况及使用。可以参考这篇文章《Java设计模式学习篇(十三)策略设计模式》。简单的来说,策略设计模式就是设计一组可以相互替代的算法家族或者动态的选择某一方法。

      首先,我们还是来看看基本的策略模式是什么样的。

      我们写一个类叫StrageDemo,其主要实现缓存的替换策略。里面加上几个内部类。分别是接口Cache,以及实现类CacheMemoryCacheRedis。分别实现基于内存的缓存和基于Redis的缓存功能。具体代码如下:

     那么我们怎么使用呢?我们可以在这个类中加入两个变量。分别代表内存方案和Redis方案。

    然后我们实现一个方法,根据自定义的方案来返回对应的缓存对象。

   最后,我们来看看这个类的UML图,如下所示。


     接下来下面我们来看看在Netty中是怎么使用的?

       在新连接接入的时候,EventExcutorChooser会根据EventExcutor的长度来进行选择。因为默认构造函数是创建CPU两倍的线程,也可以用户自定义线程个数。那么这里将接入的新连接交给哪个线程,就用到了这种策略模式。

     我们进去看看这个PowerOfTwoEventExecutorChooser当线程数量是2的倍数,那么采用这种分配方案。

 其中这个PowerOfTwoEventExecutorChooser类实现了EventExcutorChooser接口。

 同样,GenericEventExecutorChooser这个类的实现也类似。当用户传递进去的线程数不满足2的倍数,那么就采用这种方案进行分配Reactor线程。

     这个使用案例和我们上面给的案例实现手段类似。

文章转载自码农的修炼之道,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论