Netty中的设计模式(一)建造者设计模式

我们知道Netty是一款优秀的开源网络框架,本来这一篇想写Netty中的延迟队列。但是这个内容还是放到后面再写吧。最近这几篇文章先来谈一谈Netty中使用的设计模式。

我们先来看一下基本的建造者设计模式。如下,我们定义一个学生类,定义一些基本参数。

然后设置set方法。

这里设置方法,与我们平时的setter/getter方法有点区别。在这里,我们设置完参数,返回对象本身。代码中就是return this。为什么要这样做呢?我们继续看怎么使用。

使用的时候,我们先创建一个student对象,然后调用set方法设置参数。如上所示,我们也叫这种编程为“链式编程”。因为每个方法都会返回对象本身,而对象已经设置好了自己的属性。

下面我们看看在Netty中怎么使用Builder设计模式了。

如下图所示,大家还记得,在服务端启动的时候有个启动辅助类ServerBootStrap,我们调用group方法、channel方法设置参数。这里面也使用了链式编程来设置相关参数。

我们到源码中看一下group方法。调用完设置参数后,返回this对象。

我们再看看其他方法,比如childOption方法,最后设置完参数依然返回this。

其他方法依然如此。这样设计的目的在于可以自由选择设置相关参数而不强求绑定。这样可以根据使用场景进行自由的设置参数。但是缺点也是明显的,那就是使用者自己要清楚设置哪些参数。

该设计模式对我们的最大启发就是设置参数,我们可以将参数定义在一个类中,然后通过链式调用来设置参数。我们需要设置哪些参数就调用哪些方法。实际上这个设计模式在我们日常开发中都能使用到,你注意了吗?

好了,今天先介绍到这儿。后面我们还会看到Netty中其他一系列优秀的设计模式。比如:单例设计模式、策略设计模式、装饰者设计模式、观察者设计模式、迭代器设计模式、责任链设计模式。

我们后面的文章会一一介绍这些设计模式。今天先写到这儿吧。后续还会介绍Netty中的其他设计模式。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180802G0A06E00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券