最近拿到了《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