• 设计模式-创建型-抽象工厂模式-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. }

    演示结果:

  • 相关阅读:
    听GPT 讲Rust源代码--library/std(16)
    带滚动字幕的视频批量制作的方法
    JavaScript流程控制语句
    计算机系统中虚拟内存概念解疑(1)
    最重要的传输层
    基于VUE + Echarts 实现可视化数据大屏生产物联网监控智慧中心
    TCP/IP 网络分层模型
    git GUI的使用&SSH协议&IEDA使用git
    ventoy安装操作系统
    【SpringMVC】基础、环境搭建、注解搭建、 and so on……
  • 原文地址:https://blog.csdn.net/m0_58961367/article/details/138032577