4.4.4 Factoryメソッド

1148 ワード

静的方法にはもう一つの一般的な用途がある.NumberFormatクラスはfactoryを使用して異なるスタイルのフォーマットオブジェクトを生成します.

  
  
  
  
  1. NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance(); 
  2. NumberFormat percentFormatter = NumberFormat.getPercentInstance(); 
  3. double x = 1.0
  4. System.out.println(currencyFormaatter.format(x));    //prints $0.10 
  5. System.out.println(percentFormatter.format(x));    //prints 10% 

    なぜNumberFormatクラスはコンストラクタを使用してこれらの操作を完了しないのですか?これには主に2つの理由があります.
  • コンストラクタの名前を付けることはできません.コンストラクタの名前はクラスと同じ名前でなければなりません.ただし、ここで得られる通貨インスタンスとパーセンテージインスタンスは、異なる名前を使用します.
  • コンストラクタを使用する場合、コンストラクタのオブジェクトタイプは変更できません.Factoryメソッドは、NumberFormatのサブクラスであるDecimalFormatクラスのオブジェクトを返します(継承の詳細は5章を参照).