Mediator Pattern Java实现中无回调的C3是否需定义为Colleague
中介者模式单向调用类是否需要定义为Colleague的判定依据
这个问题不存在非黑即白的强制技术判定规则,本质属于可结合实际场景选择的设计风格问题,可参考以下工程实践逻辑做判断:
- 首先明确中介者模式的核心设计目标:收敛多个对等业务角色(Colleague)之间的交互逻辑,避免多个类直接耦合。Colleague的核心定义是需要和其他业务角色通过中介者完成双向交互的参与者,而非所有被中介者调用的类都必须归为Colleague。
- 你当前的场景中,C3仅作为中介者的单向消息接收方,不存在反向回调中介者的需求,也不需要和C1、C2产生业务联动,本质只是中介者依赖的普通下游服务类,技术层面完全不需要继承Colleague,也不会破坏中介者模式的核心架构。
- 如果符合以下两种情况,可以选择将C3划入Colleague体系:
- 有明确的迭代计划,后续C3会增加回调中介者、或和C1/C2联动的逻辑,提前统一继承体系可以减少后续改造成本,也能让代码维护者快速梳理所有和中介者有交互的类
- 团队有明确编码规范,要求所有和中介者存在交互的类必须统一实现Colleague接口/继承抽象类,统一约定带来的维护收益远高于空继承的微小代码冗余
- 如果C3的定位是纯粹的下游工具类(比如仅负责发送通知、记录日志),未来也不会参与多业务角色的联动逻辑,不建议强行归入Colleague体系,避免把无关职责的类硬塞进继承结构,反而混淆Colleague的核心定位。
如果想要明确关联关系又不想引入冗余的mediator字段,可以单独定义一个空标记接口比如MediatorRelated让C3实现,既能清晰标识关联,也不会带来额外的代码负担。
内容的提问来源于stack exchange,提问作者borisv1307
相关产品推荐
相关产品推荐

