<分区>
我希望创建一个仅包含公共(public)静态方法的辅助类。我声明了一个类而不是命名空间,因为我将把这个类与其他类交 friend ,这样它也可以对它们的私有(private)成员进行操作。
这被认为是一种糟糕的 OOP 做法吗?是否有更好的既定方法来实现此目标,或者为此类案例提供类似模式的名称,以便我可以在互联网上进行进一步研究?
谢谢。
<分区>
我希望创建一个仅包含公共(public)静态方法的辅助类。我声明了一个类而不是命名空间,因为我将把这个类与其他类交 friend ,这样它也可以对它们的私有(private)成员进行操作。
这被认为是一种糟糕的 OOP 做法吗?是否有更好的既定方法来实现此目标,或者为此类案例提供类似模式的名称,以便我可以在互联网上进行进一步研究?
谢谢。
最佳答案
Is this considered a bad OOP practice?
当然。事实上,它只是不是 OOP1。这本身很好,但使用类是不必要的麻烦。
Is there an established better way to achieve this goal
是的——使用命名空间:“辅助”函数几乎绝对不能在类中占有一席之地。
I will befriend this class with others so that it can operate on their private members as well.
如果你有很多公共(public)函数访问一个类型的私有(private)成员,这是一个很好的暗示,表明你的接口(interface)太宽泛,或者你的类有太多事情要做(记住“S”SOLID:一个单一的责任每个类(class))。是时候重构了。您的辅助函数现在可能应该知道您的其他类。相反,您的其他类应该调用这些助手并将数据成员作为参数传递。
1 OOP 不意味着“这段代码使用了一个类”。相反,它是一种编写代码的方式,将数据与行为进行逻辑分组,以实现封装、抽象和(运行时)多态性。类是实现此目标的工具,但它们本身并不是目标。做您打算做的事情不会对数据及其行为进行分组(相反:如果有的话,它会将其拆分)并且不会帮助抽象、封装或多态性。
关于c++ - 只有公共(public)静态方法的帮助类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50452161/