1. 为什么要使类和成员的可访问性最小化?
a.可访问性越低,一个类对外暴露的信息就越少,信息隐藏程度越高,与其它类的耦合程度就更低。
b.可访问性越低,也就是封装程度高,具备的意义,跟封装的带来的意义相同。
封装的作用
a.解除组成系统的各个模块之间的耦合关系,每个模块只需要关注其他模块对外提供的API,各个模块是面向API编程。各个模块可以独立地开发,测试,优化,使用,理解和修改。它只需要维护好对外提供的API就可以。
b.减轻负担,程序员在使用模块的时候,只需要关注模块的API,其它的无需关注;维护的模块的时候,只需要维护单个的模块,不用考虑其它模块的事情,只需要考虑模块对外提供的API。
c.模块复用,可以将模块移植到其它系统,重复使用
d.优化方便,检测性能瓶颈的时候,只是确定出是哪个模块的问题,于是,只需要专门针对该模块进行优化,不用考虑其它模块,因为模块之间的耦合度低,只是通过API通信。
可以有效的解除系统中各个模块的耦合度、实现每个模块的独立开发、使得系统更加的可维护,更加的健壮。
2. 如何最小化类和接口的可访问性?
(1)能将类和接口做成包级私有就一定要做成包级私有的。
(2)如果一个类或者接口,只被另外的一个类应用,那么最好将这个类或者接口做成其内部的私有类或者接口。
3. 如何最小化一个类中的成员的可访问性?
(1)首先设计出该类需要暴露出来的api,然后将剩下的成员的设计成private类型。然后再其他类需要访问某些private类型的成员时,在删掉private,使其变成包级私有。如果你发现你需要经常这样做,那么就请你重新设计一下这个类的api。
(2)对于protected类型的成员,作用域是整个系统,所以,能用包访问类型的成员的话就尽量不要使用保护行的成员。
(3)不能为了测试而将包中的类或者成员变为public类型的,最多只能设置成包级私有类型。
(4)实例域绝对不能是public类型的.