繁体   English   中英

C ++类设计

[英]C++ class design

也许这不是纯粹的c ++技术问题,但是任何建议都是值得欢迎的。

我需要与许多成员一起实施课程(比方说A)。

我还需要通过其他类的集合来访问这些数据,并且这种访问应该非常快(绘制由A类成员提供的条件)。

第一种方法是将A内部的访问级别设置为私有,并使用种类的设置器/获取器来获取要检查的特定元素(许多方法调用)。

另一种方法是,将所有内容都公开在A中,下一个则创建数十个朋友课程。 老实说,我不喜欢以上任何一个。 系统其余部分完全不应该访问A类成员,而只能访问感兴趣的成员。

也许有人不得不处理类似的事情,并可以建议一些好的做法,也许是合适的设计模式?

如果您的类不仅仅是一个愚蠢的数据和标志集合,那么正确的方法是将您对数据所做的任何事情添加该类中,而不是使用get / set公开它。

例如,如果要从“多边形”类中提取坐标,颜色和线条粗细以进行绘制,则应在该类中添加一个方法来进行绘制(并将绘制上下文作为参数传递)。

在这两个选项中,我更喜欢使用getter / setter方法,因为公共成员不是一个好主意,尤其是在系统的大多数部分都不能访问这些成员的情况下。
因此(即使您的问题足够笼统而又贪婪),如果您担心“不受控制的访问”,也许可以采取一种解决方案

  • 声明成员为私有 (最多保护,如果基类具有某些可以访问它们的子类)
  • 为每个人都可以使用的成员使用吸气剂/设置器
  • 使用好友类(或好友方法来访问私有/受保护的成员,而随机类不应访问该成员)。

最后,您应该尝试减少访问成员的不同类的数量,并定义一个公共虚拟类,以便为每个子类提供一组公共的有效方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM