学解《Effective java》

自己理解不深不全,多多见谅


法则一:考虑用静态工厂方法代替构造器

    类事前创建好一个静态对象,并通过静态方法(即静态工厂方法)返回该静态对象,避免用构造器多次创建。而且类可以仅提供该静态工厂方法,来替代构造器。

    

    优势有三个:第一,现对于构造器使用函数参数列表,来指明返回实际被创建的对象,静态工厂方法更易描述。或者说静态创建对象用途更加专一,可以直接在名称上进行体现。【相对有构造器,静态工厂方法 hava a name】


    第二,由于实例是静态的,可以事先创建好并缓存起来,避免每次调用时候不必要的重复创建。类似享元模式(flyweight模式,又称轻量级模式),享元模式,重复使用内存中已存在对象,降低资源的消耗。也由于实例是可控的,如果仅有一个实例,则可关联到singleton模式(单例模式),则符号==与.equals()函数使用上无区别,使用==替代.equals()对性能会有随提升。


    第三,返回对象的灵活性更大,可返回其任意子类型。(应用方面偏向于接口,参见Collection),我理解的如下图所示,其中static实现类可nonpublic constructor class,甚至可以暂时不写


refers: Interfaces cannot hava static methods, so by convention, staitc factory methods for an interface named Type are put in a noninstantiable class name Types.


    第四,创建参数化实例更加简便。例,Map<String, List<String>> map = new Map<String, List<String>>()可替代为Map<String, List<String>> map = Map.newInstance();



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百草疯茂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值