学解《Effective java》

来源:互联网 发布:林弯弯淘宝 编辑:程序博客网 时间:2024/04/27 21:19

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


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

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

    

    优势有三个:第一,现对于构造器使用函数参数列表,来指明返回实际被创建的对象,静态工厂方法更易描述。或者说静态创建对象用途更加专一,可以直接在名称上进行体现。【相对有构造器,静态工厂方法 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
原创粉丝点击