如何最好地设计可扩展的类?

Blu*_*lub 5 c# architecture class-design

我的意思是:我现在基本上有一个具有太多属性和功能的类.为了保持高效和易懂,它需要以某种方式缩小.但我仍然需要所有这些属性和方法.就像现在这样:

class Apple

  float seedCount;
  ...
  ...about 25 variables and properties here.
  void Update() <-- a huge method that checks for each property and updates if so
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,该类几乎不需要这些属性.在某些情况下,需要能够非常有选择地增长并获得功能或丢失功能.我提出的唯一解决方案是,我创建了一堆类并在其中放置了一些属性.我只在需要其中一个属性时初始化这个类对象,否则它保持为null.

class Apple

  Seed seed;
Run Code Online (Sandbox Code Playgroud)

因此存在许多问题:我经常需要检查每个对象并确定每个帧的特征.如果种子没有初始化,我不必为它计算任何东西.如果是的话,我必须这样做.如果我决定将多个属性/特性放入Seed类中,我还需要检查每一个属性/特征.它变得越来越复杂.因此,我遇到的问题是,我需要对所有功能进行精细控制,并且不能将它们智能地拆分为更大的子类.任何形式的子类都只包含一堆需要检查和更新的属性.我不能完全创建Apple的子类,因为需要这种高粒度控制.创建与属性组合一样多的类将是疯狂的.我的主要目标:我想要短代码.

Tes*_*rex 5

创建与属性组合一样多的类将是疯狂的.

听起来你可能正在寻找装饰模式.它的目的是使管理具有许多不同属性组合的对象变得更容易,而不会出现指数增长的层次结构.每个属性或行为只有一个小子类(不一定是一个C#属性,只是可以组合在一起的东西),然后您可以在运行时将它们组合在一起.

在您的情况下,每个Apple装饰器类将覆盖您的Update方法,并对其部件进行必要的计算,然后调用base.Update以将其传递给下一个.

你的最终答案很大程度上取决于你的"苹果"到底是什么.