知识点:
1.静态工厂方法
2.静态工厂方法代替构造器的优势
3.静态工厂方法代替构造器的劣势
1.静态工厂方法
一个静态方法,这个方法不做别人事,只用来创建对象。 文中提到了工厂方法模式,对这个不了解的可以参考我的博客【设计模式——工厂模式】
2.静态工厂方法代替构造器的优势
a.静态工厂方法,可以按照自己的用途进行命名,提高代码的可读性。相对于构造器只能用类名命名,多个构造器,只通过参数区分,我们很难知道他们的意义。
b.灵活性,在方法中创建对象,我们可以做很多事,比如【单例模式】重复返回同样的对象,也可以返回类型的任何子类型等等。总的来说,可以在创建对象前进行你想要的控制。
c.代码简洁。
3.静态工厂方法代替构造器的劣势
a.类没有public或者protected的构造器是没法被子类化的,如果你的这个类不需要子类化,那就无所谓了
b.静态方法没法在API文档总明确标出,算一个小的劣势
c.除了文中所说的以上两个缺点,静态工厂方法的劣势,还有很多,比如,我一个工厂要创建很多不同的对象,当新的对象来时,我又要修改这个工厂,对设计模式熟悉的同事,这违反了开闭原则,比如,一个项目这么多对象,难道所有的都用一个工厂来创建,不同作用的对象混合在一起,违反了单一职责原则,这两个问题怎么解决了,想了解请参考我的博客【设计模式——工厂模式】
4.题外话
很多同事,买了Effective Java后,很激动,然后看不懂,是因为里面有很多东西你都不懂,翻译可以也是一个原因。有耐心的弄懂书中提到的每个知识点,比如,这一节中的【Flyweight模式】,【适配器模式】等,才能慢慢学习到这本书的精髓。毕竟我们不能为了看书而看书,看得快没用,一个个的知识点熟悉起来,才能慢慢成长起来。