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


    UML类图

    工厂接口类

    1. public interface ProductFactory {
    2. Phone phoneProduct();//生产手机
    3. Router routerProduct();//生产路由器
    4. }

    小米工厂实现类

    1. public class XiaomiFactoryImpl implements ProductFactory {
    2. @Override
    3. public Phone phoneProduct() {
    4. return new XiaomiPhoneImpl();
    5. }
    6. @Override
    7. public Router routerProduct() {
    8. return new XiaomiRouterImpl();
    9. }
    10. }

    华为工厂实现类

    1. public class HuaweiFactoryImpl implements ProductFactory {
    2. @Override
    3. public Phone phoneProduct() {
    4. return new HuaweiPhoneImpl();
    5. }
    6. @Override
    7. public Router routerProduct() {
    8. return new HuaweiRouterImpl();
    9. }
    10. }

    手机接口类

    1. public interface Phone {
    2. void start();//开机
    3. void callUp();//打电话
    4. }

    小米手机实现类

    1. public class XiaomiPhoneImpl implements Phone {
    2. @Override
    3. public void start() {
    4. System.out.println("小米手机开机...");
    5. }
    6. @Override
    7. public void callUp() {
    8. System.out.println("小米手机打电话...");
    9. }
    10. }

    华为手机实现类

    1. public class HuaweiPhoneImpl implements Phone {
    2. @Override
    3. public void start() {
    4. System.out.println("华为手机开机...");
    5. }
    6. @Override
    7. public void callUp() {
    8. System.out.println("华为手机打电话...");
    9. }
    10. }

    路由器接口类

    1. public interface Router {
    2. void start();//开机
    3. void openWifi();//打开WiFi
    4. }

    小米路由器实现类

    1. public class XiaomiRouterImpl implements Router {
    2. @Override
    3. public void start() {
    4. System.out.println("小米路由器开机...");
    5. }
    6. @Override
    7. public void openWifi() {
    8. System.out.println("小米路由器打开WiFi...");
    9. }
    10. }

    华为路由器实现类

    1. public class HuaweiRouterImpl implements Router {
    2. @Override
    3. public void start() {
    4. System.out.println("华为路由器开机...");
    5. }
    6. @Override
    7. public void openWifi() {
    8. System.out.println("华为路由器打开WiFi...");
    9. }
    10. }

    演示类

    1. public class Demo {
    2. public static void main(String[] args) {
    3. ProductFactory xiaomiFactory = new XiaomiFactoryImpl();
    4. ProductFactory huaweiFactory = new HuaweiFactoryImpl();
    5. //小米工厂生产手机
    6. Phone xiaomiPhone = xiaomiFactory.phoneProduct();
    7. xiaomiPhone.start();
    8. xiaomiPhone.callUp();
    9. //小米工厂生产路由器
    10. Router xiaomiRouter = xiaomiFactory.routerProduct();
    11. xiaomiRouter.start();
    12. xiaomiRouter.openWifi();
    13. //华为工厂生产手机
    14. Phone huaweiPhone = huaweiFactory.phoneProduct();
    15. huaweiPhone.start();
    16. huaweiPhone.callUp();
    17. //华为工厂生产路由器
    18. Router huaweiRouter = huaweiFactory.routerProduct();
    19. huaweiRouter.start();
    20. huaweiRouter.openWifi();
    21. }
    22. }

    演示结果:

  • 相关阅读:
    无主复制系统(2)-读写quorum
    QLabel中显示图片,让图片保持比例进行放大缩小
    NL2SQL进阶系列(1):DB-GPT-Hub、SQLcoder、Text2SQL开源应用实践详解
    【小样本实体识别】Few-NERD——基于N-way K-shot的实体识别数据集和方法介绍
    终于换掉了驾驶证上的丑照!超简单附教程,赶紧收藏!
    数据仓库 海量数据聚合
    Electron应用程序生命周期的监听
    Android控件全解手册 - 1.5万字了解Button的一切
    第二章 进程与线程 八、处理机调度(时机切换、过程调度方式)
    FPGA project : DS18B20
  • 原文地址:https://blog.csdn.net/m0_58961367/article/details/138032577