多态是工厂模式与规则引擎实现松耦合和即插即用的核心机制:工厂返回统一接口对象,运行时动态绑定具体实现;规则引擎通过继承basicrule或实现rule接口,使新增规则无需修改主流程。

多态是让工厂模式和规则引擎真正“活起来”的关键。它不只是一种语法特性,而是把“变化点”封装住、把“扩展”变得轻量的核心手段。用好了,新增一个支付方式、加一条业务规则,几乎不用动原有逻辑。
工厂模式里,多态怎么让创建逻辑松耦合
工厂模式本质是把“new谁”这件事集中管理。而多态让它不只是“选一个类来new”,更是让所有被创建的对象对外呈现统一行为,内部各自实现细节。
- 定义统一接口(如 Operator 或 Payment),所有具体实现类(Add、WechatPay)都实现它
- 工厂方法返回该接口类型,调用方只依赖接口,完全不知道背后是哪个子类
- 新增一种运算或支付方式,只需新增实现类 + 在工厂里加一行判断,其他代码零修改
- 避免了满屏 if-else 堆砌,也规避了修改已有类带来的风险
规则引擎中,多态支撑规则的即插即用
Easy Rules这类轻量规则引擎,靠多态实现“规则可替换、可组合、可复用”。不是每条规则都从头写,而是继承统一基类或实现统一接口,在运行时由引擎自动调度。
- 所有规则继承 BasicRule 或实现 Rule 接口,引擎只认这个契约
- @Condition 和 @Action 方法在不同子类中自由实现,引擎统一触发
- 组合规则(如 UnitRuleGroup)本身也实现 Rule 接口,可以嵌套、递归、动态加载
- 上线新规则?写个新类,注册进规则库即可,主流程不感知变化
两个场景共用的关键设计意识
工厂和规则引擎看似不同,但底层都遵循同一套面向对象直觉:把稳定的部分(接口/基类/执行流程)和易变的部分(具体实现/业务逻辑)彻底分开。
- 接口定义“能做什么”,子类决定“怎么做”,调用方只关心前者
- 运行时才决定调用哪个子类的方法——这是动态多态的价值所在
- 测试更简单:对接口 mock,就能覆盖所有实现;规则也可单独单元测试条件与动作
- 团队协作更顺畅:产品提新规则或新支付渠道,开发只需交付一个符合契约的类
不复杂,但容易忽略——多态不是为了炫技,而是为了让“变”有边界、“扩”有章法。











