Diseño de fábrica (Fábrica)----Patrones de diseño

Patrones de diseño - Patrones de diseño de fábrica (Fábrica)

¿Qué es el patrón de diseño de fábrica?

El patrón de diseño de fábrica es uno de los patrones de diseño más utilizados en nuestra programación y desarrollo, y es un patrón de diseño creacional .

Por ejemplo, si queremos comprar un automóvil ahora, no tenemos que preocuparnos por cómo se fabrica el automóvil y la realización específica de este tipo de automóvil , solo necesitamos obtener el automóvil de una fábrica de automóviles a través de nuestras necesidades. .

Este es el papel específico del patrón de fábrica.

Explicación detallada de la función de realización.

Puede pensar en ello, en primer lugar, una fábrica de automóviles debe producir una variedad de automóviles (si solo se produce un tipo, no se necesita una clase de fábrica, solo instanciarlo directamente), entonces, ¿cómo puede una fábrica de automóviles producir una variedad de automóviles? ¿Paño de lana?

El polimorfismo de Java puede resolver este problema.Podemos definir una clase abstracta o interfaz de un automóvil para que tenga características comunes de los automóviles , y luego definir múltiples subclases de clases de automóviles , que representan la configuración individual o las características de cada automóvil , a través del objeto El pase hacia arriba , crea una instancia del objeto de clase de automóvil y luego devuelve el objeto.

Como se muestra en la figura:

inserte la descripción de la imagen aquí

Este es el proceso básico de pintar según esta idea, jaja, la pintura no es muy buena, los amigos pueden entenderlo.

implementación de código específico

Interfaz de coche y clase de coche específica

La clase principal Car interfaz de todas las clases de autos

package com.design_patterns.factory.instance;

public interface Car {
    
    
    void produce();
}

ambulancia

package com.design_patterns.factory.instance;

public class AmbulanceCar implements Car {
    
    

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

Rolls Royce

package com.design_patterns.factory.instance;

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

triciclo Shi Feng

package com.design_patterns.factory.instance;

public class ShifengTricycleCar implements Car{
    
    

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

Vehículos blindados tanque

package com.design_patterns.factory.instance;

public class TankCar implements Car {
    
    
    @Override
    public void produce() {
    
    
        System.out.println("装甲坦克车成功生产~");
        System.out.println("价格为---->999999元\n应用范围---->国防军事");
    }
}
fábrica de automóviles
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;             //返回生产的车型
    }
}
Taller de automóviles (clase de prueba)
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);
    }
}
resultado de la operación
请输入您所需订购的车型:
ambulance
救护车成功生产~
价格为---->88889元
应用范围---->医疗救治

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

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

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

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

Resumir

Si desea agregar un nuevo tipo de automóvil a la fábrica de automóviles, simplemente cree otra subclase de automóvil que implemente la interfaz Car y agregue una oración a la declaración de cambio en la fábrica de automóviles.

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

Eso es todo.

Hasta ahora esta es una explicación y aplicación sencilla del patrón de fábrica de patrones de diseño, si crees que este artículo está bien escrito, por favor dale me gusta y anímate a seguir creando, jeje, ¡gracias!

Supongo que te gusta

Origin blog.csdn.net/weixin_43479947/article/details/107416206
Recomendado
Clasificación