• 设计模式-创建型-抽象工厂模式-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 learning
    unity打包到安卓游玩流程
    使用 Kitten 开发一款趣味成语接龙游戏
    Java基于springboot+vue的共享电动车管理系统 nodejs
    解密前端三巨头:HTML、CSS和JavaScript的关系
    ChatGPT :十几个国内免费可用 ChatGPT 网页版
    Java调用com组件之jacob
    ubuntu20.04搭建janus服务器
    以树莓集团的视角:探索AI技术如何重塑数字媒体产业发展
    基于Vue+SpringBoot的无代码动态表单系统 开源项目
  • 原文地址:https://blog.csdn.net/m0_58961367/article/details/138032577