「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ファクトリ、ファクトリ メソッド、および抽象ファクトリ: 各パターンをいつ使用する必要がありますか?

ファクトリ、ファクトリ メソッド、および抽象ファクトリ: 各パターンをいつ使用する必要がありますか?

2024 年 11 月 8 日に公開
ブラウズ:607

Factory, Factory Method, and Abstract Factory: When Should You Use Each Pattern?

ファクトリ vs ファクトリ メソッド vs 抽象ファクトリ: 総合ガイド

ファクトリ、ファクトリ メソッド、および抽象ファクトリのデザイン パターン間のニュアンスを理解すると、圧倒的になる。この記事は、これらの違いを明確にし、実用的な使用例を提供し、これらのパターンの理解を深めるために Java の例を提供することを目的としています。

1.違いを理解する

3 つのパターンはすべてオブジェクト作成をカプセル化しますが、実装が異なります:

  • Factory:さまざまなタイプのオブジェクトのインスタンス化を担当するクラス。
  • Factory メソッド: Factory インターフェイスを変更せずに、サブクラスが実行時に作成されるオブジェクトのタイプをカスタマイズできるようにします。
  • Abstract Factory: 関連オブジェクトのファミリーを作成し、型の一貫性を確保するための汎用インターフェイスを提供します。

2.各パターンをいつ使用するか

Factory: 単純な作成ロジックで固定タイプのオブジェクトを作成する必要がある場合に使用します。

Factory Method: どのオブジェクトをサブクラスに作成するかの決定を延期し、共通のインターフェイスを通じて一貫したオブジェクトの作成を確保したい場合を検討してください。

Abstract Factory: 関連オブジェクトのファミリーを作成するのに最適です。相互に互換性があり、タイプセーフである必要があります。

3. Java Examples

Factory

// FruitFactory class implementing Factory pattern for creating Apple and Orange objects
class FruitFactory {
    public Apple createApple() {
        return new Apple();
    }

    public Orange createOrange() {
        return new Orange();
    }
}

Factory Method

// FruitPicker abstract class implementing Factory Method pattern
abstract class FruitPicker {
    protected abstract Fruit createFruit();

    public void pickFruit() {
        Fruit fruit = createFruit();
        // Logic for processing the fruit
    }
}

// OrangePicker extending FruitPicker and overriding createFruit()
class OrangePicker extends FruitPicker {
    @Override
    protected Fruit createFruit() {
        return new Orange();
    }
}

Abstract Factory

// FruitFactory interface providing Abstract Factory pattern
interface FruitFactory {
    Fruit createFruit();
    Picker createPicker();
}

// AppleFactory implementing FruitFactory for Apple-specific objects
class AppleFactory implements FruitFactory {
    @Override
    public Fruit createFruit() {
        return new Apple();
    }

    @Override
    public Picker createPicker() {
        return new ApplePicker();
    }
}

結論として、ファクトリ、ファクトリ メソッド、および抽象ファクトリ パターンは、オブジェクト作成への異なるアプローチを提供し、コードの柔軟性と拡張性を保証します。それらの違いと使用例を理解することで、ソフトウェア開発プロジェクトでこれらのパターンを効果的に活用できます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3