设计模式代码实战-抽象工厂模式

1、问题描述

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

输入试例:
3
modern
classical
modern

2、抽象工厂模式

在⼯⼚⽅法模式中,每个具体⼯⼚只负责创建单⼀的产品。但是如果有多类产品
呢,⽐如说“⼿机”,⼀个品牌的⼿机有⾼端机、中低端机之分,这些具体的产品都需要建⽴⼀个单独的⼯⼚类,但
是它们都是相互关联的,都共同属于同⼀个品牌,这就可以使⽤到【抽象⼯⼚模式】

作者认为,就是将具有某个共同特性的产品,统一交给某种工厂来创建,避免每个产品都要一个新工厂来生成。
在这里插入图片描述

3、代码

该题的统一特性为现代和经典,所以分为现代工厂和经典工厂

import java.util.*;public class Main{public static void main(String[] args){Scanner sc=new Scanner(System.in);int number=sc.nextInt();sc.nextLine();for(int i=0;i<number;i++){String s=sc.nextLine();if(s.equals("modern")){Factory modernFactory=new ModernFactory();Desk modernDesk=modernFactory.createProductDesk();Sofa modernSofa=modernFactory.createProductSofa();modernDesk.display();modernSofa.display();}else if(s.equals("classical")){Factory classicalFactory=new ClassicalFactory();Desk classicalDesk=classicalFactory.createProductDesk();Sofa classicalSofa=classicalFactory.createProductSofa();classicalDesk.display();classicalSofa.display();}}}
}
interface Sofa{void display();
}interface Desk{void display();
}class ModernSofa implements Sofa{@Overridepublic void display() {System.out.println("modern sofa");}
}class ClassicSofa implements Sofa{@Overridepublic void display() {System.out.println("classical sofa");}
}class ModernDesk implements Desk {@Overridepublic void display() {System.out.println("modern chair");}
}class ClassicDesk implements Desk{@Overridepublic void display() {System.out.println("classical chair");}
}interface Factory{Desk createProductDesk();Sofa createProductSofa();
}class ModernFactory implements Factory{@Overridepublic ModernDesk createProductDesk() {return new ModernDesk();}@Overridepublic ModernSofa createProductSofa() {return new ModernSofa();}}class ClassicalFactory implements Factory{@Overridepublic ClassicDesk createProductDesk() {return new ClassicDesk();}@Overridepublic ClassicSofa createProductSofa() {return new ClassicSofa();}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/820393.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot 面试题(六)

1. 什么是Docker&#xff1f;如何将SpringBoot应用打包成Docker镜像并部署运行&#xff1f; Docker是一个开源的应用容器引擎&#xff0c;基于轻量级虚拟化技术。它允许开发者将应用程序及其依赖项打包到一个可移植的容器中&#xff0c;然后发布到任何流行的Linux或Windows操作…

MonkeyRunner在自动化测试里的应用场景

MonkeyRunner是Android提供的一个自动化测试工具&#xff0c;主要用于对Android设备或模拟器进行功能和压力测试。以下是一些MonkeyRunner在自动化测试中的应用场景及实例代码&#xff1a; 基本操作测试 点击屏幕上的特定位置或元素。 模拟滑动和手势操作。 发送按键事件。…

Kubernetes(K8S)集群搭建-node节点配置

1.开始操作之前要先关闭防火墙&#xff0c;SELinux&#xff0c;swap分区 关闭防火墙 sudo systemctl stop firewalld禁用SELinux sudo setenforce 0 # 临时禁用 sudo sed -i s/^SELINUXenforcing$/SELINUXper…

【黑马头条】-day08平台管理-用户敏感词管理-自媒体文章人工审核

文章目录 平台管理1 前端静态资源导入1.1 配置heimi-leadnews-admin.conf1.2 配置nginx.conf 2 管理员微服务的搭建2.1 创建管理员微服务2.2 创建admin表2.3 导入表实体类2.4 创建对应实体类的mapper2.5 创建启动类2.6 创建配置文件bootstrap.yml2.7 在nacos中配置数据库等 3 登…

C++从入门到精通——类的6个默认成员函数之赋值运算符重载

赋值运算符重载 前言一、运算符重载定义实例注意要点 二、赋值运算符重载赋值运算符重载格式赋值运算符重载要点重载要点传值返回和传址返回要点 三、前置和后置重载 前言 类的6个默认成员函数&#xff1a;如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么…

蓝桥杯备考随手记: practise08

问题描述: 我们知道第一个质数是 2、第二个质数是 3、第三个质数是 5…… 请你计算第 2019 个质数是多少&#xff1f; 思路分析: 质数是指除了1和自身以外没有其他因数的正整数。因此可以通过检查一个数是否有除1和自身以外的因数来判断它是否为质数。 可以从2开始逐个检查…

Vue3 笔记

vue3笔记 1. Vue3简介1.1. 【性能的提升】1.2.【 源码的升级】1.3. 【拥抱TypeScript】1.4. 【新的特性】 2. 创建Vue3工程2.1. 【基于 vue-cli 创建】2.2. 【基于 vite 创建】(推荐)2.3. 【一个简单的效果】 3. Vue3核心语法3.1. 【OptionsAPI 与 CompositionAPI】Options API…

记第一次踩坑Gradle

今天有个项目只能使用Gradle编译&#xff0c;没办法了&#xff0c;尝试吧。 先去下载了最新版本的Gradle&#xff0c;然后配置好了环境变量&#xff0c;可以在命令行使用gradle命令了。 然后打开项目开始操作一番&#xff0c;但是上来就傻眼了。 我白下载了&#xff0c;又重新下…

【QT教程】QT6与Python

QT6与Python 使用AI技术辅助生成 QT界面美化视频课程 QT性能优化视频课程 QT原理与源码分析视频课程 QT QML C扩展开发视频课程 免费QT视频课程 您可以看免费1000个QT技术视频 免费QT视频课程 QT统计图和QT数据可视化视频免费看 免费QT视频课程 QT性能优化视频免费看 免费QT视…

30元腾讯云服务器搭建幻兽帕鲁Palworld多人联机游戏,畅玩

幻兽帕鲁太火了&#xff0c;官方palworld服务器不稳定&#xff1f;不如自建服务器&#xff0c;基于腾讯云幻兽帕鲁服务器成本32元全自动部署幻兽帕鲁服务器&#xff0c;超简单有手就行&#xff0c;全程自动化一键部署10秒钟即可搞定&#xff0c;无需玩家手动部署幻兽帕鲁游戏程…

Hive 解决数据倾斜方法

数据倾斜问题&#xff0c; 通常是指参与计算的数据分布不均&#xff0c; 即某个 key 或者某些 key 的数据量远超其他 key&#xff0c; 导致在 shuffle 阶段&#xff0c; 大量相同 key 的数据被发往同一个 Reduce&#xff0c; 进而导致该 Reduce 所需的时间远超其他 Reduce&…

Elasticsearch可视化工具:kibana + elasticsearch-head

kibana 下载 地址&#xff1a;https://www.elastic.co/cn/downloads/kibana 下载别的版本&#xff1a;https://www.elastic.co/cn/downloads/past-releases#kibana 将Kibana安装包解压缩 进入config目录&#xff0c;在kibana.yml中添加es服务器地址。&#xff08;如果之前没…

Nginx内存池相关源码剖析(七)内存池接口测试

将Nginx源码编译好之后&#xff0c;通过以下代码进行测试&#xff1a; #include <ngx_config.h> #include <nginx.h> #include <ngx_core.h> #include <ngx_palloc.h> #include <stdio.h> #include <stdlib.h> #include <string.h>…

【Unity】ScriptableObject 在游戏中的使用实例

ScriptableObject 在游戏中的使用实例 ScriptableObject 使用指南Unity 存储游戏数据的几种方法Unity ScriptableObject实例创建一个物品管理的ScriptableObject创建一个管理所有 ScriptableObject 的数据库&#xff08;ItemDBSO&#xff09; ScriptableObject 使用指南 Scrip…

UOS系统-mips架构---Java环境安装

平时都是在windows系统上安装的java环境&#xff0c;今天需要在uos系统安装java1.8的环境&#xff0c;记录一下安装过程。 &#xff08;以下均在root权限下运行&#xff09; 一、查找java1.8 jdk版本 apt search openjdkopenjdk-8-jdk/未知,未知 1.8.0.212-2deepin mips64el O…

InnoDB架构:内存篇

InnoDB架构&#xff1a;内存篇 InnoDB是MySQL数据库中默认的存储引擎&#xff0c;它为数据库提供了事务安全型&#xff08;ACID兼容&#xff09;、行级锁定和外键支持等功能。InnoDB的架构设计优化了对于读取密集和写入密集型应用的性能表现&#xff0c;是一个高度优化的存储系…

llama_factory微调QWen1.5

GitHub - hiyouga/LLaMA-Factory: Unify Efficient Fine-Tuning of 100 LLMsUnify Efficient Fine-Tuning of 100 LLMs. Contribute to hiyouga/LLaMA-Factory development by creating an account on GitHub.https://github.com/hiyouga/LLaMA-FactoryQwen1.5 介绍 | QwenGITH…

uds socket

UDS通讯过程_uds socket-CSDN博客 Unix domain socket又叫 UDS或者IPC套接字&#xff0c;属于进程间通信的一种。用于在同一主机操作系统上执行的进程之间交换数据。 它由地址族引用 AF_UNIX。 UDS中有效的套接字类型是&#xff1a; SOCK_STREAM&#xff1a;面向流的套接字 …

设计模式代码实战-装饰者模式

1、问题描述 小明喜欢品尝不同口味的咖啡&#xff0c;他发现每种咖啡都可以加入不同的调料&#xff0c;比如牛奶、糖和巧克力。他决定使用装饰者模式制作自己喜欢的咖啡。 请设计一个简单的咖啡制作系统&#xff0c;使用装饰者模式为咖啡添加不同的调料。系统支持两种咖啡类型…

Ollama、FastGPT大模型RAG知识库结合使用案例

参考: https://ollama.com/download/linux https://doc.fastai.site/docs/intro/ https://blog.csdn.net/m0_71142057/article/details/136738997 https://doc.fastgpt.run/docs/development/custom-models/m3e/ https://concise-eater-d47.notion.site/Ollama-Fastgpt-b170…