适当利用朋友吗?设计用于操作特定类型对象的容器类
假设您有一个 FooManager
来管理多个 Foo
类型的对象。 FooManager
需要查看其 Foo
的某些部分来评估其当前状态。在我使用 Foo
中的一些访问器来查看这些部分之前,直到我意识到 FooManager
是唯一实际使用这些部分的类。我决定让 FooManager
成为 Foo
的朋友。这导致 Foo
类的大部分变为私有。
这样使用朋友合适吗?我的理由是它有助于封装,因为虽然它允许 FooManager 完全访问 Foo 的内部结构,但它完全阻止了对其他所有内容的访问。
Lets say you have a FooManager
made to manage multiple objects of type Foo
. The FooManager
needs to see some parts of its Foo
s to evaluate their current state. Before I was using a few accessors in Foo
to see these parts, until I realized that FooManager
is the only class actually using these. I decided to make FooManager
a friend of Foo
. This resulted in most of class Foo
becoming private.
Is this an appropriate use of friend? My reasoning was that it helps encapsulation because while it gives FooManager
complete access to Foo
's internals, it completely blocks off access to everything else.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
除非有一种不同的、更干净的方法来实现您想要实现的目标,否则这听起来像是一个公平的方法。
关于封装,请参见:http://www.parashift .com/c++-faq-lite/friends.html#faq-14.2。
Unless there is a different and cleaner way to achieve what you're trying to achieve, this sounds like a fair approach.
With regards to encapsulation, see: http://www.parashift.com/c++-faq-lite/friends.html#faq-14.2.