看“系统程序员成长计划-谁动了你的隐私(上) ”,其中有个侯捷的观点“学从难处学, 用从易处用”,我的理解是学习的时候要知道怎么做,而且也要知道为什么做,搞清楚原理。使用的时候用最简单、有效、最易理解方法实现,而不要没有必要使用复杂的技巧。在平时开发中遵循一个原则就是不要重复造轮子,但是有时候知道怎么使用轮子,也要知道轮子怎么造出来,当使用轮子有问题才能快速的定位原因。
在文章中提出3个问题“什么是封装?为什么要封装?如何实现封装?”
我的回答:
- 什么是封装?
程序对外提供接口使用,不把内部处理暴露出来,因为调用者不需要了解内部,也不能让调用者了解和修改内部的数据。(网上的解释:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别.) - 为什么要封装?
实现调用者对程序的安全访问(对于程序来说)、便捷使用(对于调用者);
(他的观点:隔离变化,程序内部的变化只要不修改接口,对调用者来说是一样的;降低复杂度,屏蔽内部实现细节,只暴露最小接口,会让系统变得简单,在一定程度降低复杂度。)
- 如何实现封装?
面向对象的语言在语言级别上实现了对访问的控(public、private、protect等关键字);C的封装可能只能在设计上实现,好像没有提供语言级别上的访问控制。