我支持贾斯汀的答案,我只加上一个考虑因素。如果您的业务流程图层也处理业务层,并且如果您的外观最终成为业务流程任务的一对一映射,那么您可以考虑将业务流程作为您的外观。但在这种情况下你不会问,所以要么你的外观简化了业务流程使用协议,要么编排和业务层是同行。在任何一种情况下,您都需要一个与业务流程模块不同的外观
只要呼叫执行一次操作(在呼叫者眼中)并且完全完成,Facade内部的呼叫数量就无关紧要。
请记住,对调用者的单个操作可能包括记录,运行业务规则,打开与数据库的连接,写入数据库,然后最终关闭和清理连接。
如果只是一次调用,则应将这些图层合并为单个图层。
Facade和Orchestration层是否松散耦合?如果是这样,那么我的回答是“不”不合并。从原则的角度来看,我认为松耦合有价值,应该保留它。
如果Facade只有一次调用业务流程层,或者是多次调用就可以了。
它不止一次调用的那一刻 - 它正在做什么和Orchestration层正在做什么之间的区别。想想他们的生活理由。
但是,我允许区分纯粹的“商业”电话和“交叉”电话。通过建立只允许一个“业务”呼叫“通过”Facade的约定,您可以为业务服务保持一个干净的结构(从来没有任何混淆);但另一方面,你在技术上并没有限制其他交叉切换调用来增强系统行为和能力。