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;

    }

  • 相关阅读:
    货币系统
    纸牌
    活动
    KKT-黑白球
    POJ2676-Sudoku
    POJ1717-Dominoes
    POJ1088-滑雪
    POJ1862-Stripies
    POJ2531-Network Saboteur
    2019.12.13 数的划分
  • 原文地址:https://www.cnblogs.com/timeObjserver/p/9693107.html
Copyright © 2011-2022 走看看