您的位置:首页 > Web前端

学解《Effective java》

2017-01-04 13:56 225 查看
自己理解不深不全,多多见谅

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

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

    

    优势有三个:第一,现对于构造器使用函数参数列表,来指明返回实际被创建的对象,静态工厂方法更易描述。或者说静态创建对象用途更加专一,可以直接在名称上进行体现。【相对有构造器,静态工厂方法 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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: