“支持非可变性”和“使用空数组而不是NULL”

最近拿到了《Effective Java》这本书,虽然有点旧,而且其中讲述的java是1.3左右,不过其中的一些思想到现在也可以使用。

首先被我实践使用的是下面两个原则:
1:支持非可变性
2:使用空数组而不是NULL

支持非可变性主要是通过一下几个方法来实现的:
1:不提供修改对象的方法,比较典型的是setXXX
2:保证没有可被子类改写的方法,可以通过设置类为final来完成
3:使所有域都是final的,这一步没有完全理解,可能和线程同步有关
4:使所有域都是私有的,貌似private好不够,需要和final搭配
5:保证对于任何可变组件的互斥访问,可以使用保护性拷贝

我的个人感觉,如果你的类只是包含原始数据类型的对象,就是不存在是否引用的那种,那么这里的方法要简单很多,不过如果不是的话(一般都不是),那么就需要仔细考虑了。

第二个比较容易理解,因为在了解了NullObject之后,其实这里的这个空数组也可以看作为NullObject的一种退化。

对于我来说,第二个比较容易实践,而第一个其实还存在一些问题。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章