C# 如何处理多个对象共享的数据

C# 如何处理多个对象共享的数据,c#,oop,C#,Oop,我遇到了一个OOP反复出现的情况,我想知道最好的处理方法是什么。问题是类的数据在其许多实例中都是相同的 例如,假设我想对NA的所有汽车进行道路模拟。我想要一个汽车类,可能有数百个变量来存储机械功能。其中一些数据对于每个汽车对象都是唯一的,例如燃油油位、温度等。其他数据将在特定车型/年份的所有汽车对象中保持一致,如马力、扭矩、制动速度等。例如,所有2015款本田Civic都将具有相同的马力(我不知道是否准确),但燃油油位不同 我的问题是如何处理这些共享值,并且仍然具有特定于对象的值。我的想法是:

我遇到了一个OOP反复出现的情况,我想知道最好的处理方法是什么。问题是类的数据在其许多实例中都是相同的

例如,假设我想对NA的所有汽车进行道路模拟。我想要一个汽车类,可能有数百个变量来存储机械功能。其中一些数据对于每个汽车对象都是唯一的,例如燃油油位、温度等。其他数据将在特定车型/年份的所有汽车对象中保持一致,如马力、扭矩、制动速度等。例如,所有2015款本田Civic都将具有相同的马力(我不知道是否准确),但燃油油位不同

我的问题是如何处理这些共享值,并且仍然具有特定于对象的值。我的想法是:

想法A:为每个车型/年份创建一种预制对象,并在每次创建汽车对象时从中复制。这方面的主要问题是内存使用效率低下;假设我有50辆VAR与车型/年挂钩,然后我有100000辆2015本田Civic。这是5000000个存储值,其中大部分是重复的,因为每个2015 Civic存储的正是车型/年份信息

想法B:创建某种数据库,存储每辆车的规格,然后每个实例只需要在数据库中引用或指针即可。我遇到的问题是,我似乎需要并行类树,一个用于实例数据,另一个用于共享模型数据


所以我想知道,对于处理跨同一类的一组对象的相同数据,我有哪些选择?如果我的解释不清楚或思维过程怪异,我深表歉意。

四人帮提出的这个问题有一个模式

飞锤:

飞锤是一种通过与其他类似对象共享尽可能多的数据来最小化内存使用的对象;当简单的重复表示将使用不可接受的内存量时,这是一种大量使用对象的方法


这里可以找到更好的解释和示例:

常量或仅getter属性没有分配任何内存。架构方面的问题最好在这里提问。谢谢,这正是我想要的!我想一定有一个正式的最佳实践,因为这似乎是一个常见的问题,但不知道该去哪里找。干杯,很高兴我能帮上忙。如果答案符合你的需要,也请接受。