设计模式-创建型-抽象工厂模式-Abstract Factory

时间:2024-04-24 22:39:30
UML类图

工厂接口类

public interface ProductFactory {
    Phone phoneProduct();//生产手机

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

小米工厂实现类

public class XiaomiFactoryImpl implements ProductFactory {
    @Override
    public Phone phoneProduct() {
        return new XiaomiPhoneImpl();
    }

    @Override
    public Router routerProduct() {
        return new XiaomiRouterImpl();
    }
}

华为工厂实现类

public class HuaweiFactoryImpl implements ProductFactory {
    @Override
    public Phone phoneProduct() {
        return new HuaweiPhoneImpl();
    }

    @Override
    public Router routerProduct() {
        return new HuaweiRouterImpl();
    }
}

手机接口类

public interface Phone {
    void start();//开机

    void callUp();//打电话
}

小米手机实现类

public class XiaomiPhoneImpl implements Phone {
    @Override
    public void start() {
        System.out.println("小米手机开机...");
    }

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

华为手机实现类

public class HuaweiPhoneImpl implements Phone {
    @Override
    public void start() {
        System.out.println("华为手机开机...");
    }

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

路由器接口类

public interface Router {
    void start();//开机

    void openWifi();//打开WiFi
}

小米路由器实现类

public class XiaomiRouterImpl implements Router {
    @Override
    public void start() {
        System.out.println("小米路由器开机...");
    }

    @Override
    public void openWifi() {
        System.out.println("小米路由器打开WiFi...");
    }
}

华为路由器实现类

public class HuaweiRouterImpl implements Router {
    @Override
    public void start() {
        System.out.println("华为路由器开机...");
    }

    @Override
    public void openWifi() {
        System.out.println("华为路由器打开WiFi...");
    }
}

演示类

public class Demo {
    public static void main(String[] args) {
        ProductFactory xiaomiFactory = new XiaomiFactoryImpl();
        ProductFactory huaweiFactory = new HuaweiFactoryImpl();

        //小米工厂生产手机
        Phone xiaomiPhone = xiaomiFactory.phoneProduct();
        xiaomiPhone.start();
        xiaomiPhone.callUp();

        //小米工厂生产路由器
        Router xiaomiRouter = xiaomiFactory.routerProduct();
        xiaomiRouter.start();
        xiaomiRouter.openWifi();

        //华为工厂生产手机
        Phone huaweiPhone = huaweiFactory.phoneProduct();
        huaweiPhone.start();
        huaweiPhone.callUp();

        //华为工厂生产路由器
        Router huaweiRouter = huaweiFactory.routerProduct();
        huaweiRouter.start();
        huaweiRouter.openWifi();

    }
}

演示结果: