第1条 考虑用静态工厂方法代替构造器(静态工厂模式)

第1条 考虑用静态工厂方法代替构造器(静态工厂模式)

定义:
  • 像Fragment fragment = MyFragment.newIntance();这样不通过new,而用一个静态方法对外提供自身实例的方法。
优势:
  • 优势1:工厂方法有名称(使用工厂产生对象,比构造器更加自由,不用专门去找使用哪一个构造器,直接通过工厂名就可以产生想要的对象),构造方法就算参数不同,new对象的时候使用的也是对象名称。
  • 优势2:工厂产生的对象可以复用(相当于单例模式),如果是这样产生的对象,可以使用==代替equals,提升性能。
  • 优势3:可以返回原类型的任何子类对象,可以选择更适合自己的那一个对象进行返回(里氏替换原则),而构造函数只能返回自身。
  • 优势4:创建参数化类型实例的时候,可以使用泛型,使代码更加简洁,JDK1.7已经对这个方面进行了优化。
缺点:
  • 缺点1:类如果不含公有的或者受保护的构造器,不能被子类化。
  • 缺点2:它们与静态方法实际上没有任何区别(如,String中的valueOf(),实际上是一种类型转换方法)。
总结:
  • 总结:静态工厂方法和公有构造器各有用处,我们需要理解他们各自的长处。静态工厂通常更加合适,因此,切忌第一反应就是提供公有的构造器,而不考虑静态工厂。
  • 在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值