对构建模式感到困惑c#

时间:2013-12-03 08:58:37

标签: c#

我对在游戏中实现面向对象编程感到困惑,希望你能帮助我。

所以我创建了:

  1. ChunkClass:块对象的基类

  2. ChunkBuilder:产生块的工厂静态类

  3. Map:定位我的块,物品,风景物品等的类。

  4. 我的ChunkBuilder课程如下:

    public static class ChunkBuilder
    {
        private static List<Chunk> _chunk = new List<Chunk>();
    
        public static List<Chunk> Chunk
        {
            get { return _chunk; }
            set { _chunk = value; }
        }
    
        /// <summary>
        /// Create a chunk with tiles on position.
        /// </summary>
        /// <param name="tx">Tiles on the X Axis.</param>
        /// <param name="ty">Tiles on the Y Axis.</param>
        /// <param name="tz">Tiles on the Z Axis.</param>
        /// <param name="pos">The Posiiont of the Chunk.</param>
        public static void CreateChunk(int tx, int ty, int tz, Vector3Int pos)
        {
            _chunk.Add(new Chunk(tx, ty, tz, pos));
        }
    }
    

    我认为我正在以错误的方式创建这样的块,因为这样我从ChunkBuilder中的列表中获取块数据...但这似乎是错误的,因为,这是假设建设课程?同样在同一个ChunkBuilder类中,我想添加一个方法RemoveChunkFrom(Vector3Int pos),这将完全破坏构建模式?我承认我现在正在编程4个月,而且我对如何正确地做这样的事情感到困惑。你能救我一下吗?

2 个答案:

答案 0 :(得分:1)

ChunkBuilder.CreateChunk方法添加到列表后,让您的ChunkBuilder方法返回新创建的块。

至于它的感觉..也许命名更改会有所帮助.. ChunkFactory可能会成为{{1}}。

答案 1 :(得分:0)

我建议改变

public static void CreateChunk(int tx, int ty, int tz, Vector3Int pos)
{
    _chunk.Add(new Chunk(tx, ty, tz, pos));
}

public static Chunk CreateChunk(int tx, int ty, int tz, Vector3Int pos)  
{
    Chunk chunk = new Chunk(tx, ty, tz, pos);
    _chunk.Add(chunk);
    return chunk;
}

然后,调用代码可以使用新的Chunk而不是请求列表并尝试查找新项目。
现在,为什么数据保存在List?如果添加删除项的方法,则“Builder”类不仅仅是构建器类。你需要考虑一个更好的名称来描述它的作用。