我正在用 C# 创建一个游戏。每个级别由几个瓷砖组成。每个图 block 都是特定类型的,例如草地、木墙等
理想情况下,我希望有一个基类“Tile”并继承它来为每种类型的图 block 创建类。我想让 tile 的属性成为子类的某种静态/const/etc 成员,因为每种类型的 tile 只会具有相同的属性。 IE。我不希望 100 个 Tiles 有一个属性都具有相同的值,这看起来效率很低。
问题是您不能在 C# 中执行此操作。有什么方法可以实现我想要的吗?
我的替代想法是将它们全部分成树,一个只有类“Tile”代表一个实例,另一个“TileType”我从中为每种类型实例化一个对象,并可能通过某种“TileType 集合”。虽然这感觉很奇怪,但我宁愿以第一种方式进行。
在处理此类情况时是否有任何通用准则?
最佳答案
您正在寻找 FlyWeight 设计模式:
http://en.wikipedia.org/wiki/Flyweight_pattern
Flyweight is a software design pattern. A flyweight is an object that minimizes memory use by sharing as much data as possible with other similar objects; it is a way to use objects in large numbers when a simple repeated representation would use an unacceptable amount of memory.
这里有一些 C# 示例:http://www.dofactory.com/Patterns/PatternFlyweight.aspx#_self2
关于c# - 如何在 C# 中执行 "static overloaded const"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6212723/