pax*_*blo 10
封装(信息隐藏)允许您仅向外界公开绝对最小值.这意味着您可以在不影响客户端的情况下将非暴露位更改为您的内容.
一个很好的例子.假设您已经实现了一个包含数组中字符串的数据结构.如果公开数组,数据结构的用户只能用于str[7]获取位置7的字符串.
现在,如果您决定将数据结构重新实现为平衡树以加快字符串搜索,会发生什么.您可以通过将字符串移动到树中并将数组更改为字符串而不是字符串,而是指向树中位置的指针来完成此操作.
这会破坏你的客户,因为他们会期待字符串,而不是指针.每个客户端都必须更改以从数组中获取指针,然后查看树中的指针.
但是,如果您完全隐藏了实现并且只提供了一个函数:
String getStringAt (int n);
Run Code Online (Sandbox Code Playgroud)
您只需更改数据结构和功能以保持兼容.
客户端不会中断,因为您的应用程序编程接口(API)没有更改.
我遵循的最重要的规则之一是瞄准最大连贯性,最小耦合.换句话说,一个班级应该拥有它所需要的一切(仅此而已),它应该尽可能少地与外界分享信息.
这意味着所有的客户端可以做的就是调用API.不暴露非API方法或允许不受限制地访问公共变量 - 一切都应该使用setter和getter来完成.
| 归档时间: |
|
| 查看次数: |
237 次 |
| 最近记录: |