Tomcat组件分析
-
第一层关系是组件有大有小,大组件管理小组件,比如 Server 管理 Service,Service 又管理连接器和容器。
-
第二层关系是组件有外有内,外层组件控制内层组件,比如连接器是外层组件,负责对外交流,外层组件调用内层组件完成业务功能。也就是说,请求的处理过程是由外层组件来驱动的
每个组件都要经历创建、初始化、启动这几个过程,我们抽取出来一个接口 LifeCycle,每个具体的组件实现这些方法。
在父组件的 init() 方法里需要创建子组件并调用子组件的 init() 方法,在父组件的 start() 方法里也需要调用子组件的 start() 方法,这就是组合模式的使用,只要调用最顶层组件,也就是 Server 组件的 init() 和 start() 方法,整个 Tomcat 就被启动起来了。
我们把组件的生命周期定义成一个个状态,把状态的转变看作是一个事件,而事件是有监听器的,在监听器里可以实现一些逻辑,这就是典型的观察者模式
在 LifeCycle 接口里加入两个方法:添加监听器和删除监听器,定义一个 Enum 来表示组件有哪些状态