zoukankan      html  css  js  c++  java
  • 一种去中心化的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;

    }

  • 相关阅读:
    P5304旅行者(比bk201还要流氓的解法)
    考试T1护花
    考试T2修剪草坪
    考试T3麻将
    账号密码
    T7
    P2885 [USACO07NOV]电话线Telephone Wire
    P4965 薇尔莉特的打字机
    P1505 [国家集训队]旅游
    T2
  • 原文地址:https://www.cnblogs.com/timeObjserver/p/9693107.html
Copyright © 2011-2022 走看看