引导类的层次结构:

前面学习的一些组件都参与了引导的过程,其中一些在客户端和服务器都有用到,两种应用程序之间的通信引导步骤由AbstractBootstrap处理,而特定于客户端或者服务器的引导步骤分别由Bootstrap或ServerBootstrap处理。
为什么引导类是Cloneable的
有时可能需要创建多个具有类似配置或者完全相同配置的Channel,为了支持这种模式而又不需要为每个Channel都创建并配置一个新的引导类实例,AbstractBootstrap被标记为了Cloneable,进行对象的拷贝。这种方式会创建引导类实例的EventLoopGroup的一个浅拷贝,所以被浅拷贝的EvenetLoopGroup将在所有克隆的Channel实例之间共享。
补充Cloneable:
Cloneable是一个接口,里面并没有方法,作为声明使用,确定哪些类实现了该接口;
查看Object类,里面定义了一个没有方法体的方法:
protected native Object clone() throws CloneNotSupportedException;
native关键字声明一个没有方法体的方法,一般都是由JVM、第三方进行方法体逻辑的实现,比如JVM中调用C语言的方法实现;
实现一个类的克隆:
实现Cloneable接口并重写Object的clone()方法,具体是浅拷贝还是深拷贝由方法逻辑决定。
补充流式编程:
原理:方法返回当前实例,例如:a().xxx(xx).sss(ss);
这个跟设计模式中的“建造者模式Builder”原理一致,本质上都是对象的引用然后在这个对象的基础上进行盖房子
