設計モード:シンプルエンジニアリングモード
定義と構造
定義
シンプルエンジニアリングモードは、静的エンジニアリングメソッドモードとも呼ばれる作成モードに属します。シンプルエンジニアリングモードでは、さまざまなパラメーターに従ってさまざまなクラスのインスタンスを返すことができます。静的ファクトリモードは、サブクラスのインスタンスの作成を担当するクラスを具体的に定義します、作成されたサブクラスは通常、共通の親クラスを持っています
構造図
一般に3つのカテゴリに分類されます。
- ファクトリ:単純なエンジニアリングモデルのコアであるファクトリクラスは、すべてのインスタンスを作成する内部ロジックの実装を担当します。ファクトリクラスの製品クラスを作成するメソッドは、必要な製品オブジェクトを作成するために外部から直接呼び出すことができます。
- IProduce:抽象製品クラス。単純なエンジニアリングモデルによって作成されたすべてのオブジェクトの親クラスであり、すべてのインスタンスに共通の共通インターフェースを記述します。
- 製品:特定の製品カテゴリは、単純なエンジニアリングモデルのターゲットカテゴリです。
成し遂げる
さまざまな種類のペンを製造したいペンの製造元があるとすると、ペンを製造するには別のクラスが必要です。
製品抽象クラス
public abstract class Pen {
// 产品的抽象方法,由具体的产品类去实现
public abstract void start();
}
特定の実装クラス
public class Pencil extends Pen {
@Override
public void start(){
System.out.println("pencil start!");
}
}
public class Ballpen extends Pen {
@Override
public void start(){
System.out.println("Ballpen start!");
}
}
工場クラス
public class PenFactory {
public static Pen creatPen(String type){
Pen pen=null;
switch(type){
case "pencil":
pen=new Pencil();
break;
case "ballpen":
pen= new Ballpen();
break;
default:
break;
}
return pen;
}
}
テスト
public class Test {
public static void main(String[] args) {
Pen pen=PenFactory.creatPen("pencil");
pen.start();
}
}
長所と短所
利点
- ファクトリクラスには、必要な論理判断が含まれています。これにより、上記で作成する製品クラスインスタンスを決定できます。クライアントは、それらの間で製品オブジェクトを作成する責任を免除して、製品を消費するだけで、責任の分割を実現できます。
- クライアント側は特定の製品カテゴリの名前を知っており、作成を容易にするために対応するパラメータを知るだけでよい
- 構成ファイルを導入することにより、クライアントコードを変更せずに新しい特定の製品カテゴリを置き換えて追加できるため、システムの柔軟性がある程度向上します。
不利益
- ファクトリクラスはすべての製品の作成ロジックに集中しているため、問題が発生すると、システム全体が影響を受けます
- システムの拡張は困難です。新しい製品を追加したら、ファクトリロジックを変更する必要があります。これにより、開閉の原則が破られます。より多くの製品の場合、複雑なロジックが発生しやすく、拡張やメンテナンスにつながりません。
- 単純なファクトリモデルは静的なエンジニアリング手法を使用しており、エンジニアリングの役割が継承に基づいて階層を形成するのを防ぎます
該当するシーン
- ファクトリクラスは、作成するオブジェクトの数を減らします。作成するオブジェクトの数が少ないので、ビジネスロジックはあまり複雑になりません
- クライアントは作成されたパラメータを知るだけでよく、それを実装する方法を気にする必要はありません
やっと
- 本を読んだ後、ご褒美をいただいた場合は、高く評価していただければ幸いです。更新の最大の動機になりますので、よろしくお願いします。
- 私の公式アカウント[java Toka Fox]に注意を払い、javaとコンピューターの基本的な知識に焦点を当て、それを読んだ後に何かが確実に得られるように、皆さんを歓迎します。私を信じていない場合は、私を叩いてください
- 読んだ後で別の意見や提案がある場合は、コメントして共有してください。ご愛顧ありがとうございます。