《Effective Java》读书笔记4

rule 13:使类和成员的可访问性最小化

  设计良好的模块会隐藏所有的实现细节,把API与它的实现清晰地隔离开来。模块之间只通过API进行通信,模块不需要知道其他模块的内部细节。这个概念称为信息隐藏封装

  因此,时刻记住:尽可能地使每个类或成员的可访问性最小化。

  类的可访问性有两类:package-private, public,若某个类只是被本包中的一些其它类使用,外部不需要使用该类,则它应该被设为package-private,而不应该设计成public。这样的话,在以后的发行版中,你可以任意对它进行修改。而如果设计成public,则在修改时,必须考虑它的兼容性。

  成员的可访问性有四种:private, package-private, protected, public,出了导出的API外,默认应该把其他的成员都设计为private。只有当同一个包中的其他类需要使用该成员时,才应该将其设计为package-private。一般而言,private,package-private都是类实现的一部分,一般不影响导出的API。protected成员属于导出API的一部分,应该尽量少用。实例域绝不能是public的,一旦设为public,就放弃了对存储在这个域中的值进行限制的能力,当这个域的值被外部修改时,也失去了对其采取任何行动的能力。

ps:类中具有如下的域,是一个潜在的漏洞!因为外部可以随意修改数组中的内容!

public static final x[] VALUES;

解决方法:

private static final x[] PRIVATE_VALUES = {...};

public static final x[] VALUES= Collections.unmodifiableList(Arrays.asList());

posted on 2013-06-25 18:59  ykcul  阅读(228)  评论(0)    收藏  举报

导航