通常,我们设计游戏引擎时,或者管理器时,都会由管理器产出各种产品,一旦有新产品要加,就要修改管理器,来增加相应的生成代码. 这从设计上来看有两个问题: 1,管理器参数需要有个类型,在管理器中用if else根据类型来生产不同产品 2,违反了设计原则“对修改封闭,对扩展开放” 使用者使用时要通过管理器来生产对象.这是明显的中心化. 去中心化设计: 仍然有管理器,对使用者不可见.管理器类有一个静态创建函数,用于创建产品: class product : Object { public static…