Effective Java 中文版第二版的读书心得(一)
2009-03-10 08:33
405 查看
虽然只看到了不到100页,但收获还是很多的。
首选很感谢Joshua Bloch写的这本书,当然更感谢我们的司令翻译。至少目前我看到的100页的内容,基本没发现翻译很别扭的地方,包括错别字也没有发现,至少没有影响到我对书中内容的理解。再次感谢。
在后面的读书心得里,我会根据我的个人理解,将书中的各个知识点逐个和大家分享。 书中的一些观点我也不是完全赞同的,呵呵(估计是我的水平不够,呵呵呵)。
我们先看全书第一个问题:考虑用静态工厂方法代替构造器。
也就是,不再使用 new ()这种方式来获得一个类的实例,而是通过工厂方法获得。
优点:
1 有名字
这个我体会还是比较深的,在JDK里,我见过一个类的最多的构造器数量,有16个。大家可以看看 java.math.BigDecimal 这个类就知道了。
就算一个类的构造器有4个左右,我想你很可能在使用的时候会极其注意,不要选错了到底是用哪一个。
所以,如果能提供一个很好命名的方法来实现构造类,确实是一个不错的主意,比如
BigDecimal.getInstanceFromString(...); 我想这个名字虽然有点垃圾,但要表达的意思确实异常的明确。
在一些第三方的库里面,这种情况更加突出。我许多时候不得不看看API文档,来区分我的那个int参数到底是使用三个参数的构造器,还是使用四个参数的构造器。因为他们太像了。
2 可以单例
这个就不用说了,你可以在方法里干你要做的任何事情,而new绝对会给你一个新的实例。
3 可以返回任何子类型。
这个对于系统的扩展是很有用处的。new 已经决定了你肯定要这个类,而静态方法却可以修改,不一定肯定返回你方法所在的类,可以在必要时替换为一个子类。
4 代码简便
这点我体会不深,呵呵
不过这个写法我确实经常用
List<String> list = new ArrayList<String>();
后面的那个ArrayList<String>里面的 String就是一个例子吧。不过我倒是不是很在意这个,因为我很喜欢这样写了。
下面这个例子看上去确实不错。呵呵!
首选很感谢Joshua Bloch写的这本书,当然更感谢我们的司令翻译。至少目前我看到的100页的内容,基本没发现翻译很别扭的地方,包括错别字也没有发现,至少没有影响到我对书中内容的理解。再次感谢。
在后面的读书心得里,我会根据我的个人理解,将书中的各个知识点逐个和大家分享。 书中的一些观点我也不是完全赞同的,呵呵(估计是我的水平不够,呵呵呵)。
我们先看全书第一个问题:考虑用静态工厂方法代替构造器。
也就是,不再使用 new ()这种方式来获得一个类的实例,而是通过工厂方法获得。
优点:
1 有名字
这个我体会还是比较深的,在JDK里,我见过一个类的最多的构造器数量,有16个。大家可以看看 java.math.BigDecimal 这个类就知道了。
就算一个类的构造器有4个左右,我想你很可能在使用的时候会极其注意,不要选错了到底是用哪一个。
所以,如果能提供一个很好命名的方法来实现构造类,确实是一个不错的主意,比如
BigDecimal.getInstanceFromString(...); 我想这个名字虽然有点垃圾,但要表达的意思确实异常的明确。
在一些第三方的库里面,这种情况更加突出。我许多时候不得不看看API文档,来区分我的那个int参数到底是使用三个参数的构造器,还是使用四个参数的构造器。因为他们太像了。
2 可以单例
这个就不用说了,你可以在方法里干你要做的任何事情,而new绝对会给你一个新的实例。
3 可以返回任何子类型。
这个对于系统的扩展是很有用处的。new 已经决定了你肯定要这个类,而静态方法却可以修改,不一定肯定返回你方法所在的类,可以在必要时替换为一个子类。
4 代码简便
这点我体会不深,呵呵
不过这个写法我确实经常用
List<String> list = new ArrayList<String>();
后面的那个ArrayList<String>里面的 String就是一个例子吧。不过我倒是不是很在意这个,因为我很喜欢这样写了。
下面这个例子看上去确实不错。呵呵!
public class Test<K, V> extends Thread { public static void main(String[] args) { Test<String, String> te = Test.newInstance(); } public static <K, V> Test<K, V> newInstance() { return new Test<K, V>(); } }
相关文章推荐
- Effective Java 中文版第二版的读书心得(二)
- Effective Java 中文版第二版的读书心得(四)通过私有构造器强化不可实例化的能力
- 用枚举增强单例模式的可靠性 - Effective Java 中文版第二版的读书心得(三)
- 《深入理解计算机系统CSAPP(第二版)》读书心得与全书推荐
- Chapter 2 -- SystemC From Gound 读书心得
- Chapter 5 -- SystemC From Gound 读书心得
- 读书方法心得
- Effective Java(第二版)第43条-返回零长度的数据或者集合,而不是NULL
- 读书札记:Fiddler--中文版(本人自己汉化的)下载
- [转]读书心得:思考·后半本
- 软件架构师书籍及高效读书心得
- 读书心得:近代中国为什么落伍了?
- 读《Effective java 中文版》(5)
- 《Effective Java》学习心得
- Perl参考大全(第二版) 中文版
- 深度探索C++对象模型的读书心得
- [读书心得] 需要在.net中使用ADO2.x的情况
- 《C#高级编程》 读书心得1--核心C# 几点你可能没注意,但很基础的小东西。
- 【Effective Java中文版】第二版:第四章 类和接口[002] [20180112]
- 《C#高级编程》 读书心得2 -- 浅谈C#中的泛型