“支持非可變性”和“使用空數組而不是NULL”

最近拿到了《Effective Java》這本書,雖然有點舊,而且其中講述的java是1.3左右,不過其中的一些思想到現在也可以使用。

首先被我實踐使用的是下面兩個原則:
1:支持非可變性
2:使用空數組而不是NULL

支持非可變性主要是通過一下幾個方法來實現的:
1:不提供修改對象的方法,比較典型的是setXXX
2:保證沒有可被子類改寫的方法,可以通過設置類爲final來完成
3:使所有域都是final的,這一步沒有完全理解,可能和線程同步有關
4:使所有域都是私有的,貌似private好不夠,需要和final搭配
5:保證對於任何可變組件的互斥訪問,可以使用保護性拷貝

我的個人感覺,如果你的類只是包含原始數據類型的對象,就是不存在是否引用的那種,那麼這裏的方法要簡單很多,不過如果不是的話(一般都不是),那麼就需要仔細考慮了。

第二個比較容易理解,因爲在瞭解了NullObject之後,其實這裏的這個空數組也可以看作爲NullObject的一種退化。

對於我來說,第二個比較容易實踐,而第一個其實還存在一些問題。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章