factory注册_创建与override

返回知识网络总入口 · 寄存器与复用

核心结论

factory 在创建时选实际类型,让平台通过派生类替换实现。注册给入口,create 查工厂,override 必须早于目标创建。

关键机制

  • 对应 utils 注册,type_id::create 应用规则,直接 new 不应用 override。
  • type override 面向类型,instance override 按创建上下文路径限定范围,同次查询实例规则通常优先。
  • 优先 by-type,by-name 依赖字符串;参数化类要注意名称支持限制。
  • 若 super.build 创建目标,先 override 再 super,按父类逻辑判断。
  • factory 改实现,config 改参数,sequence 约束改数据。

小例子或流程

// test build_phase,任何目标packet创建前
packet::type_id::set_type_override(error_packet::get_type());
// 后续仍按基类创建
req = packet::type_id::create("req");

error_packet 继承 packet,基类稳定接口和 virtual 方法支持正确分派。

易错点

  • 已有对象不会因后来 override 改类型。
  • 同名方法不天然多态,要正确 virtual。
  • 查路径、直接 new、特化与实际类型,结合 factory 打印。

关联知识

原文出处与已有面试题