今天看了看C++FAQ ,看到一句话,感到很震惊。(当然是C++功底不够好的原因了)
封装是对于代码而言的,而不是对人。
设计一个清晰的接口并且将实现和接口分离,只不过是允许用户使用接口。
而封装实现可以强迫用户使用接口。
以前看到封装这个词,总觉得封装就是不想让用户看到他们不该看到的接口和数据。
通过运用代理类的手段真正达到了隐藏用户接口的效果。
然而,真正的封装的出现是为了减少程序员的错误来考虑的
蓝色的文字引自C++FAQ
封装不会阻止人认识类的内部。封装只是防止他们写出依赖类内部实现的代码。你的
公司不必为维护你眼睛所看到的东西支付维护成本,但是必须为维护你的指尖写出的
代码支付维护成本。正如你知道的,倘若他们写的代码依赖于接口而不是实现,就不
会增加维护成本。