Cha*_*son 5 oop encapsulation class-design
我有点不清楚将一个类中的所有成员私有化并制作公共方法来处理突变的想法.原始类型不是问题,它是我不清楚的封装对象.使对象成员私有的好处是能够隐藏不适用于正在构建的类的上下文的方法.缺点是你必须提供公共方法来将参数传递给底层对象(更多方法,更多工作).另一方面,如果您希望为底层对象公开所有方法和属性,那么您是否只能将该对象公开? 以这种方式暴露物体的危险是什么?
例如,我发现暴露了向量或数组列表中的所有内容很有用.我能想到的唯一缺点是,公共成员可能会分配一种类型,而不是通过隐式转换(或某种影响).一个名义上的指定会减少问题的可能性吗?
只是旁注:我理解真正的封装意味着成员是私人的.
以这种方式暴露物体有什么危险?
更改这些对象的类型需要更改类的接口。使用私有对象 + 公共 getter/setter,您只需修改 getter 和 setter 中的代码,假设您希望保持返回的内容相同。
请注意,这就是属性在 Python 等语言中有用的原因,从技术上讲,Python 没有私有类成员,最多只有模糊类成员。