MIna学习 连接类的整体框架


MIna学习 连接类的整体框架_第1张图片

1. 为什么有了 IoService 接口还要定义 AbstractIoService 抽象类?
2. AbstractIoService 抽象类与 IoAcceptor(IoConnector)有什么区别?
分析:
IoService 接口声明了服务端的共有属性和行为;IoAcceptor 接口继承了 IoService 接口,并添加了服务端特有的接口属
性及方法,比如 bind()方法,成为典型的服务端接口;IoConnector 接口同样继承了 IoService 接口,并添加了客户端特有的
接口属性及方法,比如 connect()方法,成为典型的客户端接口;
---- IoService 是 IoAcceptor 和 IoConnector 父接口,为什么不直接定义 IoAcceptor 和 IoConnector 接口呢,因为它们有共同的特点,比如共同属性,管理服务的方法等,所有 IoService 的出现是为了代码复用。AbstractIoService 实 现 了 IoService 中 管 理 服 务 的 方 法 , 比 如getFilterChainBuilder 方法---获得过滤器链;
----为什么有了 IoService 接口还要定义 AbstractIoService 抽象类?一样为了代码的复用!AbstractIoService 抽象类实现了服务端或客户端的共有的管理服务的方法,不需要让 IoService 接口的子类重复的实现这些方法;AbstractIoService 抽 象 类 继 承 了 AbstractIoService 抽 象 类 并 实 现 了IoAcceptor 接口,成为了拥有管理服务端实现功能的服务端类;我们常用的NioSocketAcceptor 就是它的子类;AbstractIoConnector 抽象 类继承了 AbstractIoService 抽象 类并实现 IoConnector 接口,成为了拥有管理客户端实现功能的客户端类;我们常用的 NioSocketConnector 就是它的子类;
----AbstractIoService 抽象类与 IoAcceptor(IoConnector)有什么区别?
很清楚,AbstractIoService 抽象类实现的是共有的管理服务的方法,只有管理功能的一个类;而两个接口却是不同的两个服务角色----一个客户端,一个服务端。


你可能感兴趣的:(mina,框架,开源框架Mina学习)