最近拿到了《Effective Java》這本書,雖然有點舊,而且其中講述的java是1.3左右,不過其中的一些思想到現在也可以使用。
首先被我實踐使用的是下面兩個原則:
1:支持非可變性
2:使用空數組而不是NULL
支持非可變性主要是通過一下幾個方法來實現的:
1:不提供修改對象的方法,比較典型的是setXXX
2:保證沒有可被子類改寫的方法,可以通過設置類爲final來完成
3:使所有域都是final的,這一步沒有完全理解,可能和線程同步有關
4:使所有域都是私有的,貌似private好不夠,需要和final搭配
5:保證對於任何可變組件的互斥訪問,可以使用保護性拷貝
我的個人感覺,如果你的類只是包含原始數據類型的對象,就是不存在是否引用的那種,那麼這裏的方法要簡單很多,不過如果不是的話(一般都不是),那麼就需要仔細考慮了。
第二個比較容易理解,因爲在瞭解了NullObject之後,其實這裏的這個空數組也可以看作爲NullObject的一種退化。
對於我來說,第二個比較容易實踐,而第一個其實還存在一些問題。
“支持非可變性”和“使用空數組而不是NULL”
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
eclipse ssh架構下 tomcat下 訪問路
CHINADENG
2020-02-23 20:37:27
java ssh 框架下 利用junit4 spring-test進行單元測試
CHINADENG
2020-02-23 20:37:27
關於getHibernateTemplate的load方法拋出的錯誤的問題
iteye_5978
2020-02-23 07:40:32
去除網頁格式的空格
huangxr874668739
2020-06-20 07:28:21
Java學習之路 併發編程
c72digerworld
2020-06-02 10:26:01
Java學習之路 數據結構(一)遞歸、泛型複習
c72digerworld
2020-06-02 10:26:01
HtmlUnit中屏蔽warnings
huangxr874668739
2020-02-25 08:14:14
拿網頁代碼的一些小方法
huangxr874668739
2020-02-25 08:14:14
初識java
5566energy
2020-02-24 01:57:29
用Myeclips+tomcat打造自己的第一個登陸界面
5566energy
2020-02-24 01:57:29
Java虛擬機參數配置
5566energy
2020-02-24 01:57:29
eclipse ssh架構下 tomcat下 訪問路
CHINADENG
2020-02-23 20:37:27
java ssh 框架下 利用junit4 spring-test進行單元測試
CHINADENG
2020-02-23 20:37:27