Patrón de fábrica abstracto: obtenga el objeto e ignore el proceso de implementación


1. Introducción

1.1. Definición

El patrón de fábrica abstracto (patrón de fábrica abstracto) seFábrica abstractacrearOtras fábricas. El patrón de fábrica abstracto proporciona una interfaz para crear una serie de objetos relacionados o interdependientes sin especificar sus clases específicas.


1.2 Escenarios aplicables

	- 客户端(应用层)不依赖于产品类实例如何被创建、实现等细节。
	- 强调一系列相关的产品对象(属于同一产品)一起使用创建对象需要大量的重复代码。
	- 提供一个产品类的库,所有的产品以同样的接口出现,从而使得客户端不依赖于具体的实现。


1.3, ventajas

  • El aislamiento del código de productos específicos en la capa de aplicación no necesita preocuparse por los detalles de la creación.
  • Cree una serie de productos juntos.


1.4. Desventajas

  • Todos los conjuntos de productos que se pueden crear están especificados y es difícil expandir nuevos productos en el grupo de productos.
  • Incrementar la abstracción del sistema y la dificultad de comprensión.


2. Darse cuenta


Tomemos como ejemplos los teléfonos móviles y enrutadores de productos correspondientes de Huawei y Xiaomi


Paso 1. Defina la interfaz del producto

//手机产品接口
public interface IphoneProduct {
    
    
    void start();
    void shutdown();
    void callup();
    void sendSMS();
}
//路由器产品接口
public interface IRouterProduct {
    
    
    void start();
    void shutdown()
    void openWife();
    void setting();
}



Paso 2. Crea un producto correspondiente a la interfaz.

//华为手机
public class HuaweiPhone implements IphoneProduct {
    
    
    @Override
    public void start() {
    
    
        System.out.println("开启华为手机");
    }

    @Override
    public void shutdown() {
    
    
        System.out.println("关闭华为手机");
    }

    @Override
    public void callup() {
    
    
        System.out.println("华为打电话");
    }

    @Override
    public void sendSMS() {
    
    
        System.out.println("华为发短信");
    }
}

//华为路由器
public class HuaweiRouter implements IRouterProduct {
    
    
    @Override
    public void start() {
    
    
        System.out.println("启动华为路由器");
    }

    @Override
    public void shutdown() {
    
    
        System.out.println("关闭华为路由器");
    }

    @Override
    public void openWife() {
    
    
        System.out.println("打开华为Wife");
    }

    @Override
    public void setting() {
    
    
        System.out.println("华为设置");
    }
}

//小米手机
public class XiaomiPhone implements IphoneProduct {
    
    
    @Override
    public void start() {
    
    
        System.out.println("开启小米手机");
    }

    @Override
    public void shutdown() {
    
    
        System.out.println("关闭小米手机");
    }

    @Override
    public void callup() {
    
    
        System.out.println("小米打电话");
    }

    @Override
    public void sendSMS() {
    
    
        System.out.println("小米发短信");
    }
}

//小米路由器
public class XiaomiRouter implements IRouterProduct {
    
    
    @Override
    public void start() {
    
    
        System.out.println("启动小米路由器");
    }

    @Override
    public void shutdown() {
    
    
        System.out.println("关闭小米路由器");
    }

    @Override
    public void openWife() {
    
    
        System.out.println("打开小米Wife");
    }

    @Override
    public void setting() {
    
    
        System.out.println("小米设置");
    }
}



Paso 3. Crea una fábrica abstracta

//抽象产品工厂
public interface IProductFactory {
    
    
    //生产手机
    IphoneProduct iphoneProduct();

    //生产路由器
    IRouterProduct routerProduct();
}



Paso 4. Crea otras fábricas

public class XiaomiFactory implements IProductFactory {
    
    
    @Override
    public IphoneProduct iphoneProduct() {
    
    
        return new XiaomiPhone();
    }

    @Override
    public IRouterProduct routerProduct() {
    
    
        return new XiaomiRouter();
    }
}
public class HuaweiFactory implements IProductFactory {
    
    
    @Override
    public IphoneProduct iphoneProduct() {
    
    
        return new HuaweiPhone();
    }

    @Override
    public IRouterProduct routerProduct() {
    
    
        return new HuaweiRouter();
    }
}





Más información sobre otros patrones de diseño

Supongo que te gusta

Origin blog.csdn.net/qq_44972847/article/details/108058748
Recomendado
Clasificación