zoukankan      html  css  js  c++  java
  • 【Effective Java读书笔记】创建和销毁对象(一):考虑使用静态工厂方法代替构造器

    类可以提供一个静态方法,返回类的一个静态实例,如Boolean包装类的一个获取实例的静态方法

    1 public static Boolean valueOf(boolean b) {
    2        return (b ? TRUE : FALSE);
    3    }

       优势:

       1、有名称。当一个类需要多个带有相同签名的构造器时,就用静态工厂方法代替构造器,并慎重选择名称以突出它们之间的区别。 如:BigInteger.probablePrime(int bitLength, Random rnd) 返回一个随机的素数。

       2、不必在每次调用它们的时候都创建一个新对象。

       3、可以返回其子类,在选择返回对象的类时有了更大的灵活性。

       4、简化代码。

       缺点:

       1、整个类如果没有public 或 protected类型的构造器,则它将不能被继承,即不能作为超类,相当于final。

       2、与其他静态方法在api文档中没有区别,不像构造器在api中可以标识出来

    静态工厂方法惯用名称:

    •     valueOf —— 返回的实例与其参数具有相同的值,实际上是一种类型转换方法
    •     of —— valueOf简洁的替代,EnumSet中有使用
    •     getInstance
    •     newInstance ——同getInstance,保证每个返回的实例都与其他实例不同
    •     getType —— Type表示工厂方法所返回的对象类型
    •     newType
  • 相关阅读:
    机器学习基石13-Hazard of Overfitting
    机器学习基石12-Nonlinear Transformation
    机器学习基石11-Linear Models for Classification
    Java基础14-缓冲区字节流;File类
    Java基础13-字符串缓冲流;字节流
    机器学习基石10-Logistic Regression
    机器学习基石9-Linear Regression
    POJ 2245 Lotto dfs
    POJ 1008 Maya Calendar 水模拟
    POJ 1007 DNA Sorting
  • 原文地址:https://www.cnblogs.com/zoujiejun96/p/8778304.html
Copyright © 2011-2022 走看看