Fábrica (modo creativo - modo de fábrica)

Patrón de diseño:
resuelva el problema de los requisitos cambiantes (se usa cuando tiene una comprensión más profunda del software o las relaciones entre módulos).
Relación de acoplamiento entre módulos:
(La relación de acoplamiento determina directamente el comportamiento del software ante cambios)
[División de módulos, saber qué ha cambiado y qué no]
Relación entre módulos
(1) Acoplamiento estrecho: Cuando un módulo cambia , todos los módulos relacionados Cambio (2) Acoplamiento
flojo: algunos módulos son más fáciles de reemplazar o cambiar, pero otros módulos siguen siendo los mismos . o los módulos se pueden separar claramente Relación primaria y secundaria y relación de detalle abstracto .

inserte la descripción de la imagen aquí

Módulo principal (lógica principal): cambia lentamente o permanece sin cambios [abstracción de alto nivel]
módulo secundario (interfaz + implementación): cambia rápidamente [detalles de nivel inferior]

Modo de fábrica:
inserte la descripción de la imagen aquí
se está creando un objeto: debido a cambios en los requisitos, la implementación específica del objeto a menudo enfrenta cambios drásticos, pero la interfaz es estable.

Estructura (combinada con el código es más fácil de entender):
inserte la descripción de la imagen aquí
ejemplo de implementación de código:
escena, estructura del automóvil y automóvil de prueba
1. Clase abstracta de automóvil:

public abstract class AbstractCar
{
    
    
    public abstract void Startup();

    public abstract void Run();

    public abstract void Turn();

    public abstract void Stop();
}

2. Fábrica de coches abstractos

public abstract class CarFactory
{
    
    
    public abstract AbstractCar CreateCar();
}

3. Vehículos específicos de la marca Hongqi y fábricas de vehículos específicos de Hongqi

public class HongQiCar:AbstractCar//具体实现车
{
    
    
    private int Speed;
    public override void Startup()
    {
    
    
    }

    public override void Run()
    {
    
    
    }

    public override void Turn()
    {
    
    
    }

    public override void Stop()
    {
    
    
    }
}

public class HongQICarFactory:CarFactory//具体工厂
{
    
    
    public override AbstractCar CreateCar()
    {
    
    
        return new HongQiCar();
    }
}

3. Marco de pruebas de vehículos

public class CarTestFramework
{
    
    
    public void BuildContext(CarFactory carFactory)//依赖接口
    {
    
    
        //需要多个实例
        AbstractCar c1 = carFactory.CreateCar();
        AbstractCar c2 = carFactory.CreateCar();
        AbstractCar c3 = carFactory.CreateCar();
    }
    public void DoTest()
    {
    
    
    }

    public void GetTestData()
    {
    
    
    }
}

4. Llamada de función principal

public static void Main(string[] args)
{
    
    
    CarTestFramework carTestFramework = new CarTestFramework();
    carTestFramework.BuildContext(new HongQICarFactory());
}

Puntos principales:
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_51565051/article/details/131420419
Recomendado
Clasificación