正如上节说的抽象提供了一个让你忽略实现细节的模型来管理复杂度,而封装则强制阻止你看到细节。
这两个概念是相关的,因为没有封装,抽象就容易被打破。
关于封装的指导建议:
- 尽可能地限制类和成员的可访问性
- 不要公开暴露成员数据
- 避免把私用的实现细节放入类的接口中
- 不要对类的使用者做出任何假设
- 避免使用友元类
- 不要因为一个子程序里仅使用公用子程序,就把它归入公开接口
- 让阅读代码比编写代码更方便
- 要格外警惕从语言上破坏封装性(要针对接口编程,而不是透过接口针对内部实现编程)
- 留意过于紧密的耦合关系
正如上节说的抽象提供了一个让你忽略实现细节的模型来管理复杂度,而封装则强制阻止你看到细节。
这两个概念是相关的,因为没有封装,抽象就容易被打破。