一个电器工厂可以生产多种类型的电器,如海尔工厂可以生产海尔电视机、海尔空调等,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 ...
随机推荐
- 多线程与高并发(五)—— 源码解析 ReentrantLock
一.前言 ReentrantLock 是基于 AQS 实现的同步框架,关于 AQS 的源码在 这篇文章 已经讲解过,ReentrantLock 的主要实现都依赖AQS,因此在阅读本文前应该先了解 AQ ...
- Java 数字转汉字
阿拉伯数字转汉字 public static String number2chinese(int src) { final String num[] = {"零", "一 ...
- kali下安装Nessus
Kali安装Nessus 说明 Nessus是一款基于插件的系统漏洞扫描和分析软件 一.安装 1.下载安装包 https://www.tenable.com/downloads/nessus 查看ka ...
- 无情摆烂我竟是cv怪物第四周周末总结
无情摆烂我竟是cv怪物第四周周末总结 函数重要参数补充 1.*args 星号代表接收未被位置形参接收的额外的位置实参,无论有多少位置实参*args都可以将它全部接受 def func(*args): ...
- 「雅礼集训 2017 Day2」水箱 (数据结构+dp ,一个log)
题面 题解 在网上看到有些做法,有什么平衡树.启发式合并等等总之复杂度O(Tnlog^2(n))的不优做法,这里我就用一个O(Tnlogn)的做法好了 其实大体上推导的思路都是一样的. 我们很容易发现 ...
- 2020牛客NOIP赛前集训营-提高组(第二场)- B.包含 (FWT)
题面 题解 这题就是个快速沃尔什变换的模板题,输入ai时,令s[ai]=1,对s[]做一遍DWT_AND(s)(快速沃尔什正变换,按位与),然后直接访问s[x]完事. #include<map& ...
- sklearn中MLPClassifier源码解析
神经网络 .fit() 首先传入类私用方法._fit() 确定hidden_layer_size是可迭代的 调用_validate_hyperparameters验证超参数是否合法 验证输入的x和y是 ...
- thinkphp5.1打印SQL语句
最近在写tp框架搭建的小玩具,有时候我们需要查看SQL语句.所以就诞生了这篇随笔,命令如下: $xxx=db('xxx')->where('x',xx)->select(); $sql=D ...
- vscode用户自定义代码中如何表示table空格
"Print to phpfuntion": { "scope": "php", "prefix": "pfu ...
- 【疑难杂症】奇异值分解(SVD)原理与在降维中的应用
前言 在项目实战的特征工程中遇到了采用SVD进行降维,具体SVD是什么,怎么用,原理是什么都没有细说,因此特开一篇,记录下SVD的学习笔记 参考:刘建平老师博客 https://www.cnblogs ...