1、抽象工厂(抽象的抽象)(超级工厂 创建工厂) 不可以增加产品 可以增加产品簇(大类 )
产品族:一个品牌下面的所有产品;例如华为下面的手机,路由器,电脑 称为华为的产品族;
产品等级:多个品牌下面的同种产品;例如华为和小米下面的手 称为一个产品等级;
//抽象工厂接口
package com.ljb.absFactoryPattern;
/**
* Copyright (C), 2022-2030, Chongqing Mac info. Co., Ltd.
*
* @author Sw_Ljb
* @version 1.0
* @ClassName produceFactory
* @Date 2022/4/20下午5:15
*/
public interface produceFactory {
Iphone produceOnePhone();
Router produceOneRouter();
}
//产品接口
package com.ljb.absFactoryPattern;
/**
* Copyright (C), 2022-2030, Chongqing Mac info. Co., Ltd.
*
* @author Sw_Ljb
* @version 1.0
* @ClassName IphoneFactory
* @Date 2022/4/20下午4:59
*/
public interface Iphone{
void open();
void call();
void send();
void close();
}
//产品接口
package com.ljb.absFactoryPattern;
/**
* Copyright (C), 2022-2030, Chongqing Mac info. Co., Ltd.
*
* @author Sw_Ljb
* @version 1.0
* @ClassName ProductFrotory
* @Date 2022/4/20下午5:00
*/
public interface Router {
void open();
void close();
void throwWifiSignal();
}
一个产品簇的实现:
//工厂接口的实现类
package com.ljb.absFactoryPattern;
/**
* Copyright (C), 2022-2030, Chongqing Mac info. Co., Ltd.
*
* @author Sw_Ljb
* @version 1.0
* @ClassName HuaweiProductFactor
* @Date 2022/4/20下午5:14
*/
public class HuaweiProductFactor implements produceFactory{
@Override
public Iphone produceOnePhone() {
return new HuaweiPhone();
}
@Override
public Router produceOneRouter() {
return new HuaweiRouter();
}
}
package com.ljb.absFactoryPattern;
/**
* Copyright (C), 2022-2030, Chongqing Mac info. Co., Ltd.
*
* @author Sw_Ljb
* @version 1.0
* @ClassName Huawei
* @Date 2022/4/20下午5:10
*/
public class HuaweiPhone implements Iphone {
@Override
public void open() {
System.out.println("开机");
}
@Override
public void call() {
System.out.println("打电话");
}
@Override
public void send() {
System.out.println("发消息");
}
@Override
public void close() {
System.out.println("关机");
}
}
package com.ljb.absFactoryPattern;
/**
* Copyright (C), 2022-2030, Chongqing Mac info. Co., Ltd.
*
* @author Sw_Ljb
* @version 1.0
* @ClassName HuaweiRouter
* @Date 2022/4/20下午5:11
*/
public class HuaweiRouter implements Router{
@Override
public void open() {
System.out.println("开机");
}
@Override
public void close() {
System.out.println("关机");
}
@Override
public void throwWifiSignal() {
System.out.println("抛出无线信号");
}
}
抽象工厂模式优点:优于扩展,如果有新的产品簇的加入 只要各自实现抽象的接口即可,