java实例_java利用构建器来创建实例

java利用构建器来创建实例而不是构造器

e30d6c329e93bc1c5707ad5ee00bbff3.png

一个类中

重载多个构造器

34107272e305cc3479d1115f2cbcab03.png

静态工厂方法与构造器不同的

第一大优势为:他们有名称

第二大优势为:不必每一次调用他们的时候创建一个新对象

第三大优势为:他们可以返回原返回类型的任何子类型的对象

第四大优势为:所返回的对象的类随着每次调用发生变化,这取决于静态方法的参数值

下面是静态工厂方法的一些惯用名称

1)from---------------------类型转换方法

Date d = Date.from(instant)

2)of------------------------聚合方法,带有多个参数,返回该类型的一个实例,把他们合并起来

Set faceCard = EnumSet.of(JACK,QUEEN,KING)

3)valueOf-----------------比前两个更繁琐的方法BigInteger prime = BigInteger.valueOf(Integer.MAX_VALUE)

一个构造器中有多个参数时

73c609ab9638fb5b51420630b4505c23.png

简而言之,重叠构造器模式可行,但当有更多的参数是,客户端的代码会看起来非常糟糕。
javaBean看起来强于上述的重叠构造器模式,但同时也会带来多线程下不安全的问题

那么,我们的构建器出场了。

a1ecf4f4ad0fbc8c14bbb51bfe9df388.png

Main.java

public class Main

{

public static void main(String[] args)

{

//初始化一个NutritionFacts实例,一定要最后调用build()方法去调用NutritionFacts类的构造器去实例化NutritionFacts的对象

NutritionFacts cocaCola = new NutritionFacts.Builder(120,200).calories(1).carbohydrate(22).build();

//并且参数由客户端调用时决定,并不是一定要固定输入参数,改进写重载很多构造器给用户带来麻烦

//javaBean改进了重载一大堆构造器的问题,却也带来了线程不安全的问题

NutritionFacts cocaCola1 = new NutritionFacts.Builder(223,233).build();

}

}

NutritionFacts.java

d9ce44ca6015844f92aa6ca62609d6e6.png
6072732c555a6b0ac6e6f5f70f8f71c4.png

小编是一个有着5年工作经验的程序员,关于Java,自己有做材料的整合,一个完整学习Java的路线,学习材料和工具。需要的伙伴可以私信我,发送“交流”后就可免费获取。对于学习Java有任何问题(学习方法,学习效率,如何就业)都可以问我。希望你也能凭自己的努力,成为下一个优秀的程序员

a23d36b6b204c67df4e86e19b283bb06.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值