一个电器工厂可以生产多种类型的电器,如海尔工厂可以生产海尔电视机、海尔空调等,TCL工厂可以生产TCL电视机,TCL空调等,相同品牌的电器构成一个产品族,而相同类型的电器构成了一个产品等级结构,现使用
一个电器工厂可以生产多种类型的电器,如海尔工厂可以生产海尔电视机、海尔空调等,TCL工厂可以生产TCL电视机,TCL空调等,相同品牌的电器构成一个产品族,而相同类型的电器构成了一个产品等级结构,现使用抽象工厂模拟该场景。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实现。
uml类图

源码:
package 抽象工厂实现电子器件;
public interface DianQiFactory {
public Kongtiao createkongtiao();//抽象工厂
public Tv createtv();
}
package 抽象工厂实现电子器件;
public interface Kongtiao { //空调的抽象产品
public void display();
}
package 抽象工厂实现电子器件;
public interface Tv {//电视的抽象产品
public void display();
}
package 抽象工厂实现电子器件;
public class HairerFactory implements DianQiFactory {
public Kongtiao createkongtiao() { //海尔工厂生产海尔空调
return new Hairer_Kong_Tiao();
}
public Tv createtv() { //海尔工厂生产海尔电视节
return new Hairer_Tv();
}
}
package 抽象工厂实现电子器件;
public class TvFactory implements DianQiFactory {
@Override
public Kongtiao createkongtiao() {
// TODO 自动生成的方法存根
return new Tcl_Kong_tiao();
}
@Override
public Tv createtv() {
// TODO 自动生成的方法存根
return new Tcl_Tv();
}
}
package 抽象工厂实现电子器件;
public class Hairer_Kong_Tiao implements Kongtiao {
@Override
public void display() {
// TODO 自动生成的方法存根
System.out.println("海尔空调");
}
}
package 抽象工厂实现电子器件;
public class Hairer_Tv implements Tv {
@Override
public void display() {
// TODO 自动生成的方法存根
System.out.println("海尔电视机");
}
}
package 抽象工厂实现电子器件;
public class Tcl_Kong_tiao implements Kongtiao {
@Override
public void display() {
// TODO 自动生成的方法存根
System.out.println("TCL空调");
}
}
package 抽象工厂实现电子器件;
public class Tcl_Tv implements Tv {
public void display() {
// TODO 自动生成的方法存根
System.out.println("TCL电视机");
}
}
package 抽象工厂实现电子器件;
public class Client {
public static void main(String[] args) {
// TODO 自动生成的方法存根
DianQiFactory factory1, factory2; // 两个抽象工厂
Kongtiao k1, k2; // 空调两个抽象产品
Tv tv1, tv2; // 电视机两个抽象产品
factory1 = new HairerFactory(); // factory1 为具体海尔工厂
k1 = factory1.createkongtiao();
tv1 = factory1.createtv();
k1.display();
tv1.display();
factory2 = new TvFactory();// factory2位具体的TCL工厂
k2 = factory2.createkongtiao();// 工厂创建空调
tv2 = factory2.createtv();// 工厂创建电视机
k2.display();
tv2.display();
}
}
一个电器工厂可以生产多种类型的电器,如海尔工厂可以生产海尔电视机、海尔空调等,TCL工厂可以生产TCL电视机,TCL空调等,相同品牌的电器构成一个产品族,而相同类型的电器构成了一个产品等级结构,现使用的更多相关文章
- App后台开发运维和架构实践学习总结(5)——App产品从需求到研发到开发到上线到产品迭代全过程
前言 如果没有做过开发,研发过产品的人,很难体会做产品的艰难,刚进公司的人,一般充当的是程序开发,我这里说的是开发,它与研发是有区别的. 一个需求下来,如果不能很好地理解产品需求,如果不能很好的驾驭需 ...
- 使用Netty绑定一个端口如何分辨出多种类型的DTU的注册包
一. 背景 项目需要使用Netty和DTU(无线数据传输模块)通信,需要接入多种类型的DTU,每种dtu连接上来之后都首先会发送一个注册报文.需要解析该注册报文来实现: 1. 分辨出是哪种类型的dt ...
- pytest 一个测试类怎样使用多种fixture前置方法
fixture()方法写在哪里? @pytest.fixture(scope="范围")写在conftest文件中,如下图 怎么使用fixture()呢?分为一个类中使用一个前置或 ...
- 通过写一个Demo展示C#中多种常用的集合排序方法
不多说,程序很简单,就是将集合中的数据进行排序,但使用到的知识点还是比较多的,大牛勿喷,谨献给初学者!直接上程序吧! namespace Demo { /// <summary> /// ...
- 转:从产品经理的角度算一算,做一个app需要花多少钱?
http://mp.weixin.qq.com/s?__biz=MzA4NTM5MTgzNQ==&mid=400127477&idx=2&sn=6ab90b7028deed78 ...
- java编程如何实现从本地里读取文件1,写入到本地另一个文件2里(多种场景)
不多说,直接上干货! 有时候,我们需要用到这样的一个场景. ReadLocalFile1WriteLocalFile2.java (以下是相当于复制,读取文件1里的全部内容,并写入到文件2里) pac ...
- 11.按要求编写Java应用程序。 (1)创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)、减速(车速自减)、修改车牌号,查询车的载重量。 编写两个构造方法:一个没有形参,在方法中将车牌号设置“XX1234”,速 度设置为100,载重量设置为100;另 一个能为对象的所有属性赋值; (2)创建主类: 在主类中创建两个机动车对象。
package java1; public class Che { //属性 public String nub; public int speed; public double weight ; C ...
- 按要求编写Java应用程序。 (1)创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)、减速(车速自减)、修改车牌号,查询车的载重量。 编写两个构造方法:一个没有形参,在方法中将车牌号设置“XX1234”,速 度设置为100,载重量设置为100;另一个能为对象的所有属性赋值; (2)创建主类: 在主类中创建两个机动车对象。 创建第
package com.hanqi.test; public class jidongche { private String chepaihao;//车牌号 private int speed;// ...
- (1)创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)、减速(车速自减)、修改车牌号,查询车的载重量。 编写两个构造方法:一个没有形参,在方法中将车牌号设置“XX1234”,速 度设置为100,载重量设置为100;另一个能为对象的所有属性赋值; (2)创建主类: 在主类中创建两个机动车对象。
package a; public class Jidongche { private String chepaihao; private int chesu; private double zaiz ...
随机推荐
- MySQL 启停过程了解一二
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. GreatSQL是MySQL的国产分支版本,使用上与MySQL一致. 前言 你知道MySQL启停都做了些什么吗? 启动的时 ...
- 二手车价格预测 | 构建AI模型并部署Web应用 ⛵
作者:韩信子@ShowMeAI 数据分析实战系列:https://www.showmeai.tech/tutorials/40 机器学习实战系列:https://www.showmeai.tech/t ...
- iommu分析之---intel iommu初始化
intel 的iommu 是iommu框架的一个实现案例. 由于intel 的iommu 实现得比arm smmv3复杂得多,里面概念也多,所以针对intel 实现的iommu 案例的初始化部分进行一 ...
- 使用JMeter测试.Net5.0,.Net6.0框架下无数据处理的并发情况
1. 安装JMeter及使用 1.1下载JMeter 登录官方网站找到下载链接进行下载:https://jmeter.apache.org/download_jmeter.cgi 1.2配置环境变 ...
- 痞子衡嵌入式:浅析IAR下调试信息输出机制之半主机(Semihosting)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是IAR下调试信息输出机制之半主机(Semihosting). 在嵌入式世界里,输出打印信息是一种非常常用的辅助调试手段,借助打印信息,我 ...
- 你言我语 By Twikoo
主要做了两件事: 一是前端魔改 二是首页调用(替代原 bber) 注明:以下样式.功能代码基于 Twikoo v1.6.4 前端魔改 "管理面板"按钮同步隐藏输入框.先到twiko ...
- 【java】学习路线4-对象、嵌套引用、匿名对象
class Learn03_MyClass{ String name = "www.pornhub.com";//成员变量:属性 public void Hello() ...
- 面试现场!月薪3w+的这些数据挖掘SQL面试题你都掌握了吗? ⛵
作者:韩信子@ShowMeAI 数据分析实战系列:https://www.showmeai.tech/tutorials/40 AI 面试题库系列:https://www.showmeai.tech/ ...
- c++基础思维导图2
c++基础思维导图2 结构体 结构体的基本概念:用户自定义的数据类型 结构体定义和使用 struct 结构体名{结构体成员} struct 结构体名 变量名: struct 结构体名 变量名 = {成 ...
- KingbaseFlySync 评估工具的使用
关键字: KingbaseFlySync.Linux.x86_64.mips64el.aarch64.Java **** 评估工具的使用**** 1.查询评估工具所在服务器的硬件平台(x86_64.m ...