• 【设计模式专题之抽象工厂模式】3. 家具工厂


    题目描述

    小明家新开了两个工厂用来生产家具,一个生产现代风格的沙发和椅子,一个生产古典风格的沙发和椅子,现在工厂收到了一笔订单,请你帮他设计一个系统,描述订单需要生产家具的信息。

    输入描述

    输入的第一行是一个整数 N(1 ≤ N ≤ 100),表示订单的数量。 

    接下来的 N 行,每行输入一个字符串,字符串表示家具的类型。家具类型分为 "modern" 和 "classical" 两种。

    输出描述

    对于每笔订单,输出字符串表示该订单需要生产家具的信息。 

    modern订单会输出下面两行字符串 

    modern chair 

    modern sofa

    classical订单会输出下面两行字符串 

    classical chair 

    classical soft

    输入示例
    1. 3
    2. modern
    3. classical
    4. modern
    输出示例
    1. modern chair
    2. modern sofa
    3. classical chair
    4. classical sofa
    5. modern chair
    6. modern sofa
    提示信息

    在示例中,工厂收到了3笔订单,其中有2笔要求生产modern风格,1笔要求生产classical风格。根据输入的类型,每次订单生产的家具信息被输出到控制台上。

    1. package abstractFactory;
    2. import java.util.Scanner;
    3. // 抽象椅子接口
    4. interface Chair {
    5. void showInfo();
    6. }
    7. // 具体现代风格椅子
    8. class ModernChair implements Chair {
    9. @Override
    10. public void showInfo() {
    11. System.out.println("modern chair");
    12. }
    13. }
    14. // 具体古典风格椅子
    15. class ClassicalChair implements Chair {
    16. @Override
    17. public void showInfo() {
    18. System.out.println("classical chair");
    19. }
    20. }
    21. // 抽象沙发接口
    22. interface Sofa {
    23. void displayInfo();
    24. }
    25. // 具体现代风格沙发
    26. class ModernSofa implements Sofa {
    27. @Override
    28. public void displayInfo() {
    29. System.out.println("modern sofa");
    30. }
    31. }
    32. // 具体古典风格沙发
    33. class ClassicalSofa implements Sofa {
    34. @Override
    35. public void displayInfo() {
    36. System.out.println("classical sofa");
    37. }
    38. }
    39. // 抽象家居工厂接口
    40. interface FurnitureFactory {
    41. Chair createChair();
    42. Sofa createSofa();
    43. }
    44. // 具体现代风格家居工厂
    45. class ModernFurnitureFactory implements FurnitureFactory {
    46. @Override
    47. public Chair createChair() {
    48. return new ModernChair();
    49. }
    50. @Override
    51. public Sofa createSofa() {
    52. return new ModernSofa();
    53. }
    54. }
    55. // 具体古典风格家居工厂
    56. class ClassicalFurnitureFactory implements FurnitureFactory {
    57. @Override
    58. public Chair createChair() {
    59. return new ClassicalChair();
    60. }
    61. @Override
    62. public Sofa createSofa() {
    63. return new ClassicalSofa();
    64. }
    65. }
    66. public class Main {
    67. public static void main(String[] args) {
    68. Scanner scanner = new Scanner(System.in);
    69. // 读取订单数量
    70. int N = scanner.nextInt();
    71. // 处理每个订单
    72. for (int i = 0; i < N; i++) {
    73. // 读取家具类型
    74. String furnitureType = scanner.next();
    75. // 创建相应风格的家居装饰品工厂
    76. FurnitureFactory factory = null;
    77. if (furnitureType.equals("modern")) {
    78. factory = new ModernFurnitureFactory();
    79. } else if (furnitureType.equals("classical")) {
    80. factory = new ClassicalFurnitureFactory();
    81. }
    82. // 根据工厂生产椅子和沙发
    83. Chair chair = factory.createChair();
    84. Sofa sofa = factory.createSofa();
    85. // 输出家具信息
    86. chair.showInfo();
    87. sofa.displayInfo();
    88. }
    89. }
    90. }

  • 相关阅读:
    Java 顺序控制、分支控制、循环控制详解
    多商户自营连锁小程序商城的作用是什么
    Java面向对象07:简答小结类与对象
    利用无线技术实现分散传感器信号远程集中控制
    C++学习笔记
    Beyond Compare 4对比工具注册
    Springboot3.0.0-M3+spring-cloud2022.0.0-M3+consul注册中心(看到最后可以留言)
    css实现垂直上下布局的两种常用方法
    编程之路:蓝桥杯备赛指南
    IPv6+开启智慧网点转型
  • 原文地址:https://blog.csdn.net/qq_59679685/article/details/136611740