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

    演示结果:

  • 相关阅读:
    论文翻译:跨语言语音转换和富有表现力的语音转换
    QIBOX1-016-栏目的调用4
    LLaVa大模型关键技术及在线演示
    Web前端笔记1.0【Html详解,CSS详解】【Js待完善】
    NLP Bi-Encoder和Re-ranker
    互联网架构演进之路
    Unity DropDown 组件 详解
    《500 Lines or Less》(4)Contingent: A Fully Dynamic Build System(构建系统)
    目标检测及锚框、IoU
    半监督和无监督极限学习机(SS-US-ELM)(Matlab代码实现)
  • 原文地址:https://blog.csdn.net/m0_58961367/article/details/138032577