开闭原则是软件设计最重要的原则之一,设计具有良好可扩展性的业务架构极其依赖该原则。业务品种在增多,已有业务自身也在发展,需要设计一套统一,灵活,互相独立的业务架构。笔者在多个项目中,多次使用新型领导设计模式来设计可扩展的业务架构,觉得有必要总结出来,以供大家参考。本来是想把该模式归为23种设计模式之一,可能是由于能力有限,没能成功。
新型领导,把握大局(主流程),做事开明。新型领导设计模式算是笔者一种戏谑的叫法,只希望容易记忆。
最差的做法
曾经在N个项目中看到无数个if else,每一个业务种类一个else if,没有流程,没有扩展点,所有的东西塞到一个class里面。做得好一点的会抽取几个公用方法出来(这是代码复用,不是可扩展)。可能有的同学会反驳,“我从来不设计,不会写这样的代码”。不过我不信你没有看到过,或者被动写过类似的代码(历史包袱)。反正我被动写过,想哭的节奏…
理想状态
Manager统领全局,控制流程,在具体的任务处理上,交给(委托)合适的人来做。
流程以及流程上一些通用的处理是封闭的,任务处理是开放的,A业务交由A处理器操作,B业务交由B处理器操作。示意图如下:
流程应该交由类似工作流引擎的系统处理,可扩展性的问题可用新型领导模式解决。
新型领导设计模式
新型领导设计模式要解决两个问题。
一,Manager如何把多个Employee组织起来?Employee用个List存起来即可。如何发现Employee,最好通过Scan(扫描)或者注册的方式。二,如何把合适的任务交由合适的人处理?把决策权交给Employee,Manager询问谁能处理?谁先举手交给谁处理。
好了,新型领导模式的工作方式如下: Manager接到一个