ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-05-15 22:02:49  阅读:182  来源: 互联网

标签: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

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

class Apple

  Seed seed;

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

最佳答案:

It would be madness to create as many classes as there are combinations of properties.

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

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

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

标签:c,architecture,class-design
来源: https://codeday.me/bug/20190515/1110763.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有