Java:ファクトリデザイン-メソッドパターン| オブジェクト指向デザイン| デザインパターン

公開: 2013-06-28

ファクトリデザイン-メソッドパターンオブジェクト指向デザイン

Factory Design Patternは、Creational Designパターンの1つであり、JDKだけでなく、SpringMVCやStrutsなどのフレームワークでも広く使用されています。 ファクトリメソッドパターンは、ファクトリの概念を実装するためのオブジェクト指向の作成デザインパターンであり、作成されるオブジェクトの正確なクラスを指定せずにオブジェクト(製品)を作成する問題に対処します。 このパターンの本質は、「オブジェクトを作成するためのインターフェースを定義しますが、インターフェースを実装するクラスに、インスタンス化するクラスを決定させることです。 Factoryメソッドを使用すると、クラスはインスタンス化をサブクラスに延期できます

Javaデザインパターン

まず、Javaでファクトリパターンを実装する方法を学びましょう。 このパターンを実装するために5つのクラスを作成します。

  • スーパークラス(CrunchfiyCompany.java)
    • ファクトリパターンのスーパークラスは、インターフェイス、抽象クラス、または通常のJavaクラスにすることができます。 この例では、テスト目的でtoString()メソッドをオーバーライドした抽象クラスとしてスーパークラスがあります。
  • サブクラス1(CrunchifyEbay.java)
    • クラスがCrunchfiyCompanyクラスを拡張していることに注意してください。
  • サブクラス2(CrunchifyGoogle.java)
    • クラスがCrunchfiyCompanyクラスを拡張していることに注意してください。
  • ファクトリクラス(CrunchifyFactoryPattern.java)
    • スーパークラスとサブクラスの準備ができたので、ファクトリクラスを作成できます。
    • FactoryクラスをSingletonに保つことも、サブクラスを返すメソッドを静的に保つこともできます。
    • 入力パラメーターに基づいて、異なるサブクラスが作成されて返されることに注意してください。
  • テストクラス(CrunchifyFactoryPatternTest.java)
    • 上記のファクトリパターン実装を使用する単純なテストクライアントプログラム。

他の必読:

  • Javaでのスレッドセーフで高速なシングルトン実装
  • Javaのデーモンスレッドとは何ですか? 添付例

ファクトリパターンを使用した他の例?

  • java.util.Calendar、ResourceBundle、およびNumberFormat getInstance()メソッドは、ファクトリパターンを使用します。
  • ブール、整数などのラッパークラスのvalueOf()メソッド。

ファクトリパターンの利点:

  • これは、複数のサブクラスを持つスーパークラスがあり、入力に基づいて、サブクラスの1つを返す必要がある場合に使用されます。 このパターンは、クライアントプログラムからファクトリクラスへのクラスのインスタンス化の責任を負います。
  • ファクトリパターンは、実装ではなくインターフェイスのコードへのアプローチを提供します。
  • ファクトリパターンは、クライアントコードから実際の実装クラスのインスタンス化を削除し、より堅牢で、結合度が低く、拡張が容易になります。 たとえば、クライアントプログラムはこれを認識しないため、PCクラスの実装を簡単に変更できます。
  • ファクトリパターンは、継承を通じて実装クラスとクライアントクラスの間の抽象化を提供します。

欠点:

  • ファクトリは、オブジェクトのファミリに使用する必要があります。 クラスが共通の基本クラスまたはインターフェイスを拡張しない場合、ファクトリデザインテンプレートで使用することはできません。

すべてのJavaWeb開発、SpringMVCチュートリアルのリスト。