先出图
1、A、B、C、D、E都是对象或者视为一个独立的功能模块;红色的箭头代表数据流,绿色箭头和黄色块标示最终数据产出路径;
2、模式1是一个串联的数据流向,符合模型与直观的逻辑概念。但是缺点是:产生控制耦合,A存在的前提必须以B存在为基础,A必须知道B的接口和返回。同时需要判断B的返回。整个业务的逻辑分散在A、B、C、D、E中,增加理解,维护,调试的难度;
3、模式2也能够很好的完成功能,所不同的是,把分散在A、B、C、D、E中整个业务逻辑抽离出来,放在一个“业务逻辑控制器”当中,此时,A、B、C、D、E彼此不存在任何关联,他们都只会被业务控制器调用。最终数据由控制器产出。
我认为模式2明显好过模式1。虽然模式1符合直观的逻辑思维,处理过程贴近业务原形,但事实上却不是个好方案。