ホームページ  >  記事  >  Java  >  Java デザイン パターンの実際的な応用を探ります: シングルトン パターンとファクトリー パターンの適用可能な環境

Java デザイン パターンの実際的な応用を探ります: シングルトン パターンとファクトリー パターンの適用可能な環境

PHPz
PHPzオリジナル
2023-12-23 14:22:151054ブラウズ

Java デザイン パターンの実際的な応用を探ります: シングルトン パターンとファクトリー パターンの適用可能な環境

Java デザイン パターンの深い理解: シングルトン モードとファクトリー モードのアプリケーション シナリオには特定のコード例が必要です

デザイン パターンはソフトウェア開発で実践され、広く使用されています特定の問題を解決するための方法論と経験の概要。 Java言語アプリケーション開発において、一般的に使用されるデザインパターンには、シングルトンパターンとファクトリーパターンがあります。この記事では、これら 2 つの設計パターンの適用シナリオを詳しく調査し、具体的なコード例を使用して説明します。

1. シングルトン パターン

シングルトン パターンは、一般的に使用される作成デザイン パターンであり、クラスのインスタンスが 1 つだけであることを保証し、グローバル アクセス ポイントを提供します。具体的な実装方法としては、怠け者スタイルやハングリーマンスタイルなどがあります。

遅延シングルトン モードは、リソースが比較的大きく、頻繁に使用される状況に適しています。以下は、遅延シングルトン パターンのサンプル コードです。

public class LazySingleton {
    private static LazySingleton instance;
    
    private LazySingleton() {
        // 私有构造方法
    }
    
    public static LazySingleton getInstance() {
        if (instance == null) {
            synchronized (LazySingleton.class) {
                if (instance == null) {
                    instance = new LazySingleton();
                }
            }
        }
        return instance;
    }
}

ハングリー シングルトン パターンは、リソースが比較的小さく、常に使用される状況に適しています。以下は、Hungry スタイルのシングルトン パターンのサンプル コードです。

public class EagerSingleton {
    private static final EagerSingleton instance = new EagerSingleton();
    
    private EagerSingleton() {
        // 私有构造方法
    }
    
    public static EagerSingleton getInstance() {
        return instance;
    }
}

シングルトン パターンのアプリケーション シナリオには、次の状況が含まれますが、これらに限定されません。

  1. 必要なオブジェクトリソースの使用量を削減するため、頻繁に作成および破棄される;
  2. 異なるモジュール間でのデータの共有やメソッドの呼び出しを容易にするためにグローバル アクセスが必要なオブジェクト;
  3. クラスのインスタンスの数を制御する必要がある、スレッドプールやデータベース接続プールなどは待機します。

2. ファクトリ パターン

ファクトリ パターンは、一般的に使用される作成デザイン パターンであり、オブジェクト作成プロセスをファクトリ クラスにカプセル化し、外部への統一インターフェイスを提供します。ファクトリ パターンには、通常のファクトリ パターン、ファクトリ メソッド パターン、および抽象ファクトリ パターンがあります。

通常のファクトリ モードは、受信パラメータに基づいてどの特定のインスタンスを作成するかを動的に決定するのに適しています。以下は、一般的なファクトリ パターンのサンプル コードです:

public class ShapeFactory {
    public Shape createShape(String shapeType) {
        if ("circle".equals(shapeType)) {
            return new Circle();
        } else if ("rectangle".equals(shapeType)) {
            return new Rectangle();
        } else if ("triangle".equals(shapeType)) {
            return new Triangle();
        } else {
            return null;
        }
    }
}

ファクトリ メソッド パターンは、製品ラインを拡張する必要がある状況に適しています。各特定のファクトリが製品の作成を担当します。以下は、ファクトリ メソッド パターンのサンプル コードです。

public interface ShapeFactory {
    Shape createShape();
}

public class CircleFactory implements ShapeFactory {
    @Override
    public Shape createShape() {
        return new Circle();
    }
}

public class RectangleFactory implements ShapeFactory {
    @Override
    public Shape createShape() {
        return new Rectangle();
    }
}

public class TriangleFactory implements ShapeFactory {
    @Override
    public Shape createShape() {
        return new Triangle();
    }
}

抽象ファクトリ パターンは、関連または依存する製品オブジェクトのセットを作成する必要がある状況に適しています。以下は、抽象ファクトリ パターンのサンプル コードです。

public interface AbstractFactory {
    Shape createShape();
    Color createColor();
}

public class CircleFactory implements AbstractFactory {
    @Override
    public Shape createShape() {
        return new Circle();
    }
    
    @Override
    public Color createColor() {
        return new Red();
    }
}

public class RectangleFactory implements AbstractFactory {
    @Override
    public Shape createShape() {
        return new Rectangle();
    }
    
    @Override
    public Color createColor() {
        return new Blue();
    }
}

public class TriangleFactory implements AbstractFactory {
    @Override
    public Shape createShape() {
        return new Triangle();
    }
    
    @Override
    public Color createColor() {
        return new Green();
    }
}

ファクトリ パターンのアプリケーション シナリオには、次の状況が含まれますが、これらに限定されません。

  1. 複数の類似したオブジェクトが必要な状況コード ロジックを簡素化するために作成する必要がある;
  2. 結合を減らすために特定の製品の作成の詳細を非表示にする必要がある;
  3. 新しい製品の作成を容易にするために製品ラインを拡張する必要がある。

要約すると、シングルトン パターンとファクトリ パターンは一般的に使用されるデザイン パターンであり、Java アプリケーション開発で広く使用されています。シングルトン パターンは、クラスのインスタンスが 1 つだけであることを確認する必要があるシナリオに適しており、ファクトリ パターンは、オブジェクトの作成プロセスをカプセル化する必要があるシナリオに適しています。特定のアプリケーションでは、開発者はコードの品質と保守性を向上させるニーズに基づいて適切な設計パターンを選択する必要があります。

以上がJava デザイン パターンの実際的な応用を探ります: シングルトン パターンとファクトリー パターンの適用可能な環境の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。