0
点赞
收藏
分享

微信扫一扫

【第一章】创建和销毁对象

言午栩 2022-02-23 阅读 78
java

第1条:用静态工厂方法代替构造器

优势:
I.静态工厂有名称,可以知道方法的用处;
II.不用每次掉用的时候就创建新对象;
III.可以返回子类型对象;
缺点:
I.在没有文档的情况下,很难发现有这个方法

第2条:遇到多个构造器参数时要考虑使用构造器

参数太多情况,有参构造器繁琐且难以阅读,用setter代替。

第3条:用私有构造器或者枚举类型加强Singleton属性

枚举创建单例安全且简单

第4条:通过私有构造器强化不可实例化的能力

工具类这种不需要被实例化的,可以设置私有构造器。
public class UtiltyClass {
    /**
     * Suppress default constructor for nonessential
     */
    private UtiltyClass() {
        throw new AssertionError();
    }
    
    //...
}

第5条:优先考虑依赖注入来引入资源

不要用 Singleton 和静态工具类来实现依赖一个或多个底层资源的类,且该资源的行为会影响到该类的行为 ;也不要直接用这个类来创建这些资源,而应该将这些资源或者工厂传给构造器(或者静态工厂,或者构建器),通过它们来创建类这个实践就被称作依赖注入,它极大地提升了类的灵活性 可重用性和可测试性。

第6条:避免创建不必要的对象

两个例子:

I.缓存实例,进行重用

 static boolean isRomanNumeral (String str) {
        return str.matches("regex...");
    }
matches的内部为正则表达式创建一个Pattern实例,却只用了一次。为了提升性能,采用下面操作,将Pattern实例缓存起来,进行重用。
public class RomanNumerals {
    /**
     * 重用一个pattern实例
     */
    private static final Pattern ROMAN = Pattern.compile(
            "regex...");
    static boolean isRomanNumeral (String str) {
        return ROMAN.matcher(str).matches();
    }
}

II.优先使用基本数据类型,当心无意识的自动装箱操作
在这里插入图片描述
在这里插入图片描述

第7条:消除过期的对象引用

第8条:避免使用终结方法和清除方法

第9条:try-with-resources优先于try-finally

举报

相关推荐

第一章 对象导论

第一章 绪论

第一章综述

第一章作业

第一章 起步

第一章.概论

第一章介绍

0 条评论