Effective java 这本书买了很久了,书上记载着2007年8月 1日购于深圳!一直都没静下心来看!放暑假了,本来打算在北京找份工作,可是只有短短的2个月时间,公司应该不会要!自己还是太天真了,当初为了暑假能找到一份工作,不停的学SSH,学了也有一段时间了,学到的无非也是怎么去使用!有前辈提示,学框架最主要是学它的思想!但是我发现自己学了SSH这3个框架,思想并没有掌握多少!总结了下原因,可能是因为学得太急了,不够深入!反正暑假找工作估计没什么希望了,索性好好在家学习,把基础打好!无意中翻到了Effective java这本书,好吧,就从它看起吧!
第1章是引言没什么好记的!就从第2章开始吧!
第2章---创建和销毁对象
本章的主题是创建和销毁对象:什么时候,如何创建对象;什么时候,如何避免创建对象;如何保证对象能够适时地销毁;对象销毁之前如何管理各种清理工作。
第1条:考虑用静态工厂方法代替构造函数
对于一个类,为了让客户获得它的一个实例,最常见的方法是提供一个公有的构造函数。实际上除了这种方法我们还可以通过提供一个公有的静态工厂方法(static factory method)来替代构造函数。这样做既有好处,也有不足之处。
好处:
1.与构造函数不同,静态工厂方法具有名字。
如果一个构造函数的参数并没有确切地描述被返回的对象,那么选用适当名字的静态工厂可以使一个类更易于使用,并且相应的客户代码更易于阅读。
2.与构造函数不同,它们每次被调用的时候,不要求非得创建一个新的对象。
静态工厂方法可以为重复的调用返回同一个对象,这也可以被用来控制“在某一时刻哪些实例应该存在”。这样做有两个理由。
第1,它使得一个类可以保证是一个singleton。
第2,它使非可变类可以保证“不会有两个相等的实例存在”,既当且仅当a==b的时候才有a.equals(b)为true.如果一个类保证了这一点,那么它的客户就可以用==操作符来代替equals(Object)方法,其结果是实质性的性能提高。
3.与构造函数不同,它们可以返回一个原返回类型的子类型对象。
缺点:
1.类如果不含公有的或者受保护的构造函数,就不能被子类化。
可以使用复合结构,而不是继承。
2.它们与其他的静态方法没有任何区别。
静态工厂方法和公有的构造函数都有它们各自的用途,我们必须灵活运用!
其实静态工厂方法也就是工厂模式!个人的理解!
Identify the aspects of your application that vary and separate them from what stays the same.