创建和销毁对象 - 考虑用静态工厂方法代替构造器

知识点:

1.静态工厂方法

2.静态工厂方法代替构造器的优势

3.静态工厂方法代替构造器的劣势


1.静态工厂方法

  一个静态方法,这个方法不做别人事,只用来创建对象。 文中提到了工厂方法模式,对这个不了解的可以参考我的博客【设计模式——工厂模式】        


2.静态工厂方法代替构造器的优势

a.静态工厂方法,可以按照自己的用途进行命名,提高代码的可读性。相对于构造器只能用类名命名,多个构造器,只通过参数区分,我们很难知道他们的意义。            

b.灵活性,在方法中创建对象,我们可以做很多事,比如【单例模式】重复返回同样的对象,也可以返回类型的任何子类型等等。总的来说,可以在创建对象前进行你想要的控制。

c.代码简洁。


3.静态工厂方法代替构造器的劣势

a.类没有public或者protected的构造器是没法被子类化的,如果你的这个类不需要子类化,那就无所谓了

b.静态方法没法在API文档总明确标出,算一个小的劣势

c.除了文中所说的以上两个缺点,静态工厂方法的劣势,还有很多,比如,我一个工厂要创建很多不同的对象,当新的对象来时,我又要修改这个工厂,对设计模式熟悉的同事,这违反了开闭原则,比如,一个项目这么多对象,难道所有的都用一个工厂来创建,不同作用的对象混合在一起,违反了单一职责原则,这两个问题怎么解决了,想了解请参考我的博客【设计模式——工厂模式】大笑    


4.题外话

很多同事,买了Effective Java后,很激动,然后看不懂,是因为里面有很多东西你都不懂,翻译可以也是一个原因。有耐心的弄懂书中提到的每个知识点,比如,这一节中的【Flyweight模式】,【适配器模式】等,才能慢慢学习到这本书的精髓。毕竟我们不能为了看书而看书,看得快没用,一个个的知识点熟悉起来,才能慢慢成长起来。

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值