我有一堆特定功能的课程。只有一个类应该由用户代码实例化,因为其他类是“帮助”类。但是,这些辅助类确实暴露了用户代码可用的有用信息。
所以我可以使用辅助类的构造函数来只能从主类访问。
同样,让方法和数据只能从适当的类访问,而不是从“用户代码”访问是有用的。
到目前为止我想到的解决方案:
将要素的所有类放入单个文件中,并使用“static”创建仅对该文件本地的变量。这将起作用,因为只有主类的一个实例和所有'helper'类,但它似乎不是一个“好”的解决方案。
让'助手班'的朋友成为主要班级。这也可以,但也让主类访问辅助类中的所有私有数据,这是不理想的。
从虚拟基类继承:认为这可能是最好的解决方案。通过“受保护”共享数据,私有数据保持私有和公共数据暴露。尚未在这个理论中打出任何漏洞。需要考虑性能方面,因为这是一个时钟速度为72Mhz的嵌入式系统。
答案 0 :(得分:2)
使用合成。
继承的类应该只继承功能而不是继承状态。受保护的成员/函数可能会将状态逻辑划分为两个单元。我会说通过公共函数使用组合和访问功能。
重新确定您的课程永远不会对您从未了解的用户有益,所以我想说不要限制自己。