一种去中心化的manager设计思路

通常,我们设计游戏引擎时,或者管理器时,都会由管理器产出各种产品,一旦有新产品要加,就要修改管理器,来增加相应的生成代码。

这从设计上来看有两个问题:

1,管理器参数需要有个类型,在管理器中用if else根据类型来生产不同产品

2,违反了设计原则“对修改封闭,对扩展开放”

使用者使用时要通过管理器来生产对象。这是明显的中心化。

去中心化设计:

仍然有管理器,对使用者不可见。每个产品类有一个静态创建函数,用于创建产品:

class product : Object {

public static Object Create(int id) {

  var obj = objMgr.tryGet(id);

   if(!obj) {

    obj = new product(id);

    objMgr.Add(obj)

  }

  return obj;

}

原文地址:https://www.cnblogs.com/timeObjserver/p/9693107.html