ファクトリーデザイン(ファクトリー)----デザインパターン

デザインパターン-ファクトリデザインパターン(ファクトリ)

ファクトリデザインパターンとは何ですか?

ファクトリデザインパターンは、プログラミングと開発で最も一般的に使用されるデザインパターンの1つであり、創造的なデザインパターンです。

たとえば、今すぐ車を購入したい場合は、車の製造方法やこの車種の具体的な実現について心配する必要はありません。必要に応じて、自動車工場から車を入手するだけです。はい

これがファクトリパターンの特定の役割です。

実現機能の詳細説明

まず、自動車工場はさまざまな車を生産する必要があります(1つのタイプのみが生産される場合、ファクトリクラスは不要で、直接インスタンス化するだけです)。次に、1つの自動車工場がさまざまな車を生産するにはどうすればよいでしょうか。ウールの布?

Javaのポリモーフィズムは、この問題を解決するだけです。車の抽象クラスまたはインターフェイスを定義して、車の共通の特性を持たせ、次に、オブジェクトを介して、各車の個々の構成または特性を表す、車のクラスの複数のサブクラスを定義できます。上向きパスは、carクラスオブジェクトをインスタンス化してから、オブジェクトを返します。

図に示すように:

ここに画像の説明を挿入

これがこの考えによる絵付けの基本的なプロセスです、ハハ、絵はあまり良くありません、友達はそれを理解することができます。

特定のコードの実装

車のインターフェースと特定の車のクラス

すべての車のクラスの親クラスの車のインターフェース

package com.design_patterns.factory.instance;

public interface Car {
    
    
    void produce();
}

救急車

package com.design_patterns.factory.instance;

public class AmbulanceCar implements Car {
    
    

    @Override
    public void produce() {
    
    
        System.out.println("救护车成功生产~");
        System.out.println("价格为---->88889元\n应用范围---->医疗救治");
    }
}

ロールスロイス

package com.design_patterns.factory.instance;

public class RollsRoyceCar implements Car {
    
    
    @Override
    public void produce() {
    
    
        System.out.println("劳斯莱斯车成功生产~");
        System.out.println("价格为---->888000元\n应用范围---->贵族出行");
    }
}

ShiFeng三輪車

package com.design_patterns.factory.instance;

public class ShifengTricycleCar implements Car{
    
    

    @Override
    public void produce() {
    
    
        System.out.println("时风三轮车成功生产~");
        System.out.println("价格为---->20000元\n应用范围---->农业运输");
    }
}

戦車装甲車両

package com.design_patterns.factory.instance;

public class TankCar implements Car {
    
    
    @Override
    public void produce() {
    
    
        System.out.println("装甲坦克车成功生产~");
        System.out.println("价格为---->999999元\n应用范围---->国防军事");
    }
}
自動車工場
package com.design_patterns.factory.instance;

/**
 * 定义汽车的工厂类
 */
public class CarFactory {
    
    

    private Car car;                //声明Car接口对象car

    /**
     * 生产汽车的方法,根据传入的参数不同,选择生产不同的汽车
     * @param carType
     * @return
     */
    public Car createCar(String carType){
    
    
        switch (carType){
    
    
            case "ambulance":
                car = new AmbulanceCar();           //生产救护车
                break;
            case "rollsRoyce":
                car = new RollsRoyceCar();          //生产劳斯莱斯
                break;
            case "shifengTricycle":
                car = new ShifengTricycleCar();         //生产时风三轮车
                break;
            case "tank":
                car = new TankCar();            //生产坦克车
                break;
            default:
                car = null;                 //输入错误,null
                break;
        }
        return car;             //返回生产的车型
    }
}
オートショップ(テストクラス)
package com.design_patterns.factory.instance;

import java.util.Scanner;

public class CarStore {
    
    
    public static void main(String[] args) {
    
    
        Scanner sc = new Scanner(System.in);                    //定义并实例化标准输入流对象
        String carType = null;                      //定义字符串,用于用户输入
        Car car = null;                                         //声明Car接口对象car
        CarFactory carFactory = new CarFactory();               //实例化汽车工厂类
        do{
    
    
            System.out.println("\n请输入您所需订购的车型:");
            carType = sc.nextLine();                            //输出车型
            car = carFactory.createCar(carType);                //调用工厂对象的createCar()进行汽车生产并返回
            if(car != null){
    
                                //若生产成功
                car.produce();                          //打印生产成功信息
            } else {
    
    
                System.out.println("~~暂无此种汽车生产,生产失败~~");            //否则打印生产失败信息
                break;              //跳出循环
            }
        }while (true);
    }
}
運転結果
请输入您所需订购的车型:
ambulance
救护车成功生产~
价格为---->88889
应用范围---->医疗救治

请输入您所需订购的车型:
rollsRoyce
劳斯莱斯车成功生产~
价格为---->888000
应用范围---->贵族出行

请输入您所需订购的车型:
tank
装甲坦克车成功生产~
价格为---->999999
应用范围---->国防军事

请输入您所需订购的车型:
shifengTricycle
时风三轮车成功生产~
价格为---->20000
应用范围---->农业运输

请输入您所需订购的车型:
plane
~~暂无此种汽车生产,生产失败~~

要約する

新しいタイプの車を自動車工場に追加する場合は、Carインターフェースを実装する別の自動車サブクラスを作成し、自動車工場のswitchステートメントに文を追加するだけです。

case "新汽车的名字":
			car = new 新的汽车子类();
			break;

それでおしまい。

これまでのところ、これはデザインパターンのファクトリパターンの簡単な説明と適用です。この記事がうまく書かれていると思われる場合は、親指を立てて作成を続けるように励ましてください。ありがとうございます。

おすすめ

転載: blog.csdn.net/weixin_43479947/article/details/107416206