c# - 如何在 C# 中执行 "static overloaded const"?

标签 c# polymorphism

我正在用 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.

enter image description here

这里有一些 C# 示例:http://www.dofactory.com/Patterns/PatternFlyweight.aspx#_self2

关于c# - 如何在 C# 中执行 "static overloaded const"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6212723/

相关文章:

c# - 两个项目中的引用

C++ 多态数据结构

C++多态克隆: How to obtain a Derived pointer from a Base pointer?

c# - 使用正则表达式匹配两个特定单词之间的所有内容

c# - 多个表的通用批量更新

c# - 断点已设置但尚未在 Visual Studio 中绑定(bind)

c# - 如何编写一个可以由两个非继承类共享的方法

c# - 找不到“位图”(是否缺少 using 指令或程序集引用?)

Hibernate 4 显式多态性(注释)不起作用?

C++多态/纯虚函数