模块分析(二)

  对于对象/类的识别有一个需要考虑,就是调度类,在领域模型中是需要有一个调度类,或者说一个Root对象,可以将领域中的对象关联起来;可以是一个调度类性对象,类似于事件分发器;可以是一个根对象,就是通过这个root,可以链式方式,连环调度到所有的对象。

  在当一组对象/类识别出来之后,要设定他们之间的关系,关系主要有两类:所属关系和调用关系;所属关系要搞清楚是聚合,连接(要考虑清楚1:1还是1:*...)以及依赖;对于调用关系,要考虑清楚调用场景;比如一个信道管理对象和TCP的Session管理对象之间;是在信道管理对象创建了一个TCPChannel之后,调用Session管理对象的add消息,来进行Session管理;

  对于跟对象处理就是面向事件的来进行考量;所谓事件,大家可以理解为在经典INPUT-HANDLE-OUTPUT模型中的INPUT的载体,时间有以下五种触发场景(按照流程的生命周期进行排序):

  1. 监听,比如HTTP端口监听,比如TCP端口的监听,触发监听,一般都会触发事件;

  2. 异步处理,比如在NIO处理场景下,TCP发送一个请求,对端将会是异步方式进行相应,那么这个异步相应将会触发事件,这个例子可以归到上面其实也可以,异步其实本质是多线程处理,牵涉到多线程处理,还要对多线程处理结果进行跟踪和处理的,将会触发事件;

  3. 异常,将会触发事件;

  4. 完成,一个事件处理完了,可能会触发完成事件,需要调度类进行后续处理;

  5. 定时任务。

  在做模块和模块设计的时候,尽量少和外部模块交互,尽量通过上游模块以着参数的形式通告(上游可能是在没办法,不得已才会和其他模块交互,上游做牺牲,下游独立),尽量维护其独立性;

原文地址:https://www.cnblogs.com/xiashiwendao/p/6804791.html