我正在用C#创建一个游戏.每个级别由几个瓷砖组成.每块瓷砖都是某种类型,例如草地板,木墙等.
理想情况下,我希望有一个基类"Tile"并从中继承为每种类型的tile创建类.我想让tile的属性成为子类的某种static/const/etc成员,因为每种类型的tile都只具有相同的属性.即我不希望100 Tiles具有所有具有相同值的属性,这看起来效率相当低.
问题是你不能在C#中做到这一点.有没有办法达到我想要的?
我的另一个想法是将它全部分成树,一个只有表示实例的类"Tile"和另一个"TileType",我从中为每种类型实例化一个对象,并可能通过某种"TileTypeCollection"访问它们.这感觉很奇怪,我宁愿以第一种方式去做.
在处理这种情况时是否有任何一般指导原则?
您正在寻找 FlyWeight 设计模式:
http://en.wikipedia.org/wiki/Flyweight_pattern
Flyweight是一种软件设计模式。享元是一种通过与其他类似对象共享尽可能多的数据来最小化内存使用的对象;当简单的重复表示会使用不可接受的内存量时,这是一种使用大量对象的方法。

您这里有一些 C# 示例:http://www.dofactory.com/Patterns/PatternFlyweight.aspx#_self2
| 归档时间: |
|
| 查看次数: |
542 次 |
| 最近记录: |