1.構造方法2019-11-08の代わりに静的工場法を用いることを考える

1232 ワード

1.静的工場方法例:
BooleanクラスのvalueOf(boolean b)メソッドのように
/**
 * The {@code Boolean} object corresponding to the primitive
 * value {@code true}.
 */
public static final Boolean TRUE = new Boolean(true);

/**
 * The {@code Boolean} object corresponding to the primitive
 * value {@code false}.
 */
public static final Boolean FALSE = new Boolean(false);

//...      

//      
@HotSpotIntrinsicCandidate
public static Boolean valueOf(boolean b) {
    return (b ? TRUE : FALSE);
}

注意:静的ファクトリメソッドはファクトリメソッドモードとは異なり、クラスは公共の構造メソッドではなく静的ファクトリメソッドを直接提供することができます.
2.構造方法の代わりに静的工場法を用いるメリットとデメリット
2.1利点
(1).静的工場法は構造法とは異なり,それらには名前がある.(クラスに属するメソッド)(2).静的ファクトリメソッドは構造メソッドとは異なり,呼び出されるたびにオブジェクトを作成する必要はない.例えば、Boolean.valueOf(true)メソッドが呼び出され、Booleanクラスで定義された静的不変属性TRUEオブジェクトが返される.(3).静的ファクトリメソッドは構造メソッドとは異なり,任意のオブジェクトを返すことができ,構造メソッドは現在のクラスのオブジェクトのみを返すことができる.(4).スタティックファクトリメソッドが返すオブジェクトのクラスは,入力タイプによって異なる.たとえば汎用型を使用します.(5).このメソッドのクラスを記述する場合,返されるオブジェクトのクラスは存在しなくてもよい.(staticキーワードの役割)
2.2欠点
(1).静的工場法のみを提供し、公共又は保護された構造方法を提供しない場合は、布団類化できない.(主な制限)(2).静的工場法は構造法のように際立っておらず,プログラマーに読みにくい.
2.3まとめ
静的工場法と公共構造法はいずれも彼らの用途があり,彼らの相対的な価値を理解するのに少し価値がある.通常、静的ファクトリ法がより望ましいので、静的ファクトリ法を考慮せずに、共通の構造法を提供することは避けられる.