ファクトリパターンJavaとは何ですか

angryTom
リリース: 2019-11-11 09:34:57
オリジナル
3360 人が閲覧しました

ファクトリパターンJavaとは何ですか

ファクトリ パターン Java とは

ファクトリ パターンは、Java で最もよく使用されます。デザインパターン。このタイプのデザイン パターンは創造的なパターンであり、オブジェクトを作成するための最適な方法を提供します。

ファクトリ パターンでは、オブジェクトの作成時に作成ロジックをクライアントに公開せず、共通のインターフェイスを使用して新しく作成されたオブジェクトを指します。

簡単に言うと、new オペレーションの代わりにファクトリ メソッドが使用されます。平たく言えば、新しいオブジェクトを作成するときは、ファクトリ メソッドを直接呼び出すだけです。プログラミングするときは、ファクトリを定義する必要があります。サブクラスで実装するには、特定のファクトリクラスを定義し、インスタンスを生成するメソッドを定義し、このメソッドを使用してインスタンスを取得します。

利点:

1. 呼び出し元がオブジェクトを作成したい場合、必要なのはその名前だけです。

2. 高い拡張性: 製品を追加する場合は、ファクトリ クラスを拡張するだけで済みます。

3. 製品の特定の実装を保護する 呼び出し元は製品のインターフェイスのみを考慮します。

欠点:

製品を追加するたびに、特定のクラスとオブジェクト実装ファクトリを追加する必要があるため、システム内のクラスの数が 2 倍になります。ある程度、システムの複雑さが増し、システムの特定のクラスへの依存性も高まります。これは良いことではありません。

アプリケーション例:

1. 車が必要な場合、車の製造方法や仕様を気にすることなく、工場から直接受け取ることができます。この車内への実装。

ファクトリ パターンの簡単な実装は次のとおりです:

//所有车的接口  有一个共同改的方法 开车
public interface Car {
    public void drive();
}
//奥迪类  实现car接口因为奥迪车也是车 肯定可以开的嘛
public class Audi implements Car {
    public Audi(){
        System.out.println("生产出一辆奥迪");
    }
    @Override
    public void drive() {
        System.out.println("开奥迪");
    }
}
//宝马类  实现car接口因为宝马车也是车 肯定也可以开
public class Bmw implements Car{
    public Bmw(){
        System.out.println("生产出一辆宝马");
    }
    @Override
    public void drive() {
        System.out.println("开宝马");
    }
}
//生产车的工厂  该工厂接收一个车名 你只需要告诉他你要生产什么车  就可以生产出对应的车出来
public class CarFactory {
    public static Car getCar(String caename){
        if(caename.equals("audi")){
            return new Audi();
        }else if(caename.equals("bmw")){
            return new Bmw();
        }
            return null;
    }
}
//测试
public class Test {
    public static void main(String[] args) {
        //告诉工厂类 你需要生产出一辆奥迪车  那么给昂他传一个参数audi进去
        Car audi = CarFactory.getCar("audi");
        //就可以生产出奥迪的车 调用开车的方法就可以开车啦
        audi.drive();
        //宝马类似
        Car bmw = CarFactory.getCar("bmw");
        bmw.drive();
    }
}
输出:
成产出一辆奥迪
开奥迪
生产出一辆宝马
开宝马
ログイン後にコピー

推奨チュートリアル: java チュートリアル

以上がファクトリパターンJavaとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート