知识卡片

细粒度模块划分技巧:分层细化(Sub-layer)

普通读书笔记卡

内容

[[EDD封装驱动设计方法的四个步骤]]第三步”细粒度划分模块”要达成的目标是:最终由一组细粒度”模块”组成、层次结构清晰但不限于经典的3层或4层、”功能模块”概念清晰可见(每个功能模块由一组位于不同层的细粒度模块组成)、通用模块被单独划分出来——第一个具体技巧就是分层细化。分层细化指在粗粒度层内部进一步”封装”职责,形成更细致的层次结构,国外有专家称之为Sub-layer。书中举了三个具体例子:服务调度层和服务层的分离——业务层内部不是笼统的一坨,而是拆出专门负责”调度该由哪个服务处理”的调度层,和真正执行业务逻辑的服务层;业务层内服务层和对象层的分离——服务层负责对外暴露的业务操作接口,对象层负责承载业务对象本身的状态和行为;UI层内View层和Controller层的分离——UI层进一步拆分成负责纯展示的View和负责处理用户输入、协调交互流程的Controller。这些例子的共同模式是:一个原本被当作”一层”的粗粒度区域,内部其实承担着若干职责不同的子任务,如果不做分层细化,这些职责会混在一起、让这一层内部变得臃肿难懂;一旦识别出这些子职责各自的边界,把它们拆成独立的Sub-layer,这一层内部就重新获得了清晰的结构。分层细化的价值在于:经典的3层、4层架构投标时够用,但用来指导后续详细设计和并行开发绝对不够——投标关心的是”大方向对不对”,而并行开发需要的是”每个小组具体该实现哪块、边界在哪里”,只有做到分层细化的粒度,团队才有可依据的、真正可操作的分工边界。

参考来源

- 位置:《软件架构设计:程序员向架构师转型必备》第15章《模块划分的4步骤方法——运用层、模块、功能模块、用例驱动》"15.2.2 细粒度模块的划分技巧"节"【技能项】分层细化"(源文件:_epub-src/OEBPS/text00018.html) - 结论依据:原文说明"在粗粒度层内进一步'封装'职责形成更细致的层次结构,国外有的专家称之为Sub-layer。例如:服务调度层和服务层的分离。业务层内,服务层和对象层的分离……再例如,UI层内,View层和Controller层的分离",并总结"经典的3层架构、4层架构,投标可能够用,但指导后续详细设计和并行开发绝对不够,还需要通过引入Sub-layer进行【分层的细化】",直接支撑本卡片结论。 - 原始内容:在粗粒度层内进一步"封装"职责形成更细致的层次结构,国外有的专家称之为Sub-layer……经典的3层架构、4层架构,投标可能够用,但指导后续详细设计和并行开发绝对不够,还需要通过引入Sub-layer进行【分层的细化】。