目录
Java设计模式之 1
抽象工厂模式实验报告书 1
实验四:抽象工厂模式 2
一、实验目的 2
二、实验内容 2
三、实验步骤 2
3.1抽象工厂模式:电器工厂 2
3.2 car 6
3.3 电脑 12
四、实验结果分析 17
抽象工厂的意图 17
抽象工厂的结构 17
抽象工厂的优点 18
抽象工厂的缺点 18

实验四:抽象工厂模式
一、实验目的
熟练使用JAVA实现抽象工厂模式,理解设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式。

二、实验内容
电器工厂、Car和computer

三、实验步骤
3.1抽象工厂模式:电器工厂

具体代码如下:

  1. AirConditoner.java
    package a;

public interface AirConditoner {
public void changeTemperature();

}
2. client.java
package a;

public class client {
public static void main(String[] args) {
Television tv;
AirConditoner airconditioner;
Efactory factory =new HaierFactory();
tv=factory.producetelevision();
airconditioner =factory.produceairconditoner();
tv.play();
airconditioner.changeTemperature();
}

}
3. Efactory.java
package a;

public interface Efactory {
public Television producetelevision();
public AirConditoner produceairconditoner();

}
4. HaierAirConditoner.java
package a;

public class HaierAirConditoner implements AirConditoner{
public void changeTemperature(){
System.out.println(“海尔空调控温中”);
}

}
5. HaierFactory.java
package a;

public class HaierFactory implements Efactory{
public Television producetelevision(){
return new HaierTelevision();
}
public AirConditoner produceairconditoner(){
return new HaierAirConditoner();
}

}

  1. HaierTelevision.java
    package a;

public class HaierTelevision implements Television{
public void play(){
System.out.println(“海尔电视播放中”);
}

}
7. TCLAirConditoner.java
package a;

public class TCLAirConditoner implements AirConditoner{
public void changeTemperature(){
System.out.println(“TCL空调控温中”);
}

}
8. TClfactory.java
package a;

public class TClfactory implements Efactory{
public Television producetelevision(){
return new TCLTelevision();
}
public AirConditoner produceairconditoner(){
return new TCLAirConditoner();
}
}
9. TCLTelevision.java
package a;

public class TCLTelevision implements Television{
public void play(){
System.out.println(“TCL电视播放中。”);
}

}
10. Television.java
package a;

public interface Television {
public void play();

}

运行结果如下:抓图

3.2 car

具体代码实现:

运行结果:

3.3 电脑

设计思路:

具体代码如下:

运行结果如下:抓图

四、实验结果分析
抽象工厂的意图
抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。根据里氏替换原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例。换言之,也就是这些抽象产品的具体子类的实例。工厂类负责创建抽象产品的具体子类的实例。
抽象工厂的结构

抽象工厂的优点
1.它分离了具体的类
2.它使得易于交换产品系列
3.它有利于产品的一致性
缺点:
难以支持新种类的产品
微型计算机配件,这个系统所需要的产品族有两个,一个系列是PC系列,另一个系列是MAC系列。
产品等级结构也有两个,一个是RAM,一个是CPU。
抽象工厂的缺点
如果要增加一个项目表Project,那么就需要增加三个类,IProject,MySQLProject,OracleProject,还需要改动IFactory,MySQLFactory,OracleFactory才可以完全实现。这样是很糟糕的。

欢迎您关注我的微信公众号:学习微站(studysth)

Java设计模式之 抽象工厂模式实验报告书相关推荐

  1. Java设计模式之简单工厂模式实验(软件工程综合实践课程第二周)

    实验目的 1 .理解软件设计的相关理论 : 2 .理解面向对象设计原则: 实验内容 1 .简单工厂模式实验: (1) 参考讲义上的代码,利用简单工厂模式完成计算器应用程序: (2) 画出计算器程序简单 ...

  2. JAVA设计模式之抽象工厂模式

    本文继续介绍23种设计模式系列之抽象工厂模式. 前面已经介绍过简单工厂模式和工厂方法模式,这里继续介绍第三种工厂模式-抽象工厂模式,还是以汽车的制造为例. 例子背景: 随着客户的要求越来越高,宝马车需 ...

  3. Java 设计模式之抽象工厂模式

    抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂.该超级工厂又称为其他工厂的工厂.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在抽 ...

  4. Java设计模式:抽象工厂模式

    1. 定义 抽象工厂模式,即Abstract Factory Pattern,提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类:具体的工厂负责实现具体的产品实例. 抽象工厂模式与工厂 ...

  5. 最简单java设计模式:抽象工厂模式

    前言 在前一篇文章讲解了一下简单工厂模式和工厂方法模式,这篇文章再把抽象工厂模式讲解一下. 一.什么是抽象工厂模式 抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的.抽象工厂模式可以向客户端提 ...

  6. JAVA设计模式之抽象工厂模式和代理模式

    目录 一.抽象工厂模式 1.1.模式的定义与特点 1.2.模式的结构 二.代理模式 2.1代理模式的定义与特点 2.2代理模式的结构与实现 一.抽象工厂模式 1.1.模式的定义与特点 抽象工厂(Abs ...

  7. JAVA设计模式之——抽象工厂模式

    文章目录 一.类型 二.定义 三.参与者 四.类图 五.示例 六.适用情况 参考文章 一.类型 创建型模式 二.定义 定义一个接口,用于创建一组相关或有依赖关系的对象,而且无需指定这些对象具体的类. ...

  8. Java设计模式:抽象工厂模式--农场的季节生产对应水果举例

    /*** 农场的抽象.不同季节生产不同的蔬菜和水果.*/ public interface Farm {//不同季节,不同蔬菜和水果.int WINTER = 1; //冬季.int SUMMER = ...

  9. 设计模式三—抽象工厂模式

    设计模式三-抽象工厂模式 一.定义 抽象工厂模式是工厂方法模式的进一步抽象.如果产品簇中只有一种产品,则退化为工厂方法模式. 二.原理图 三.代码实例 * 苹果和土豆是园丁1的杰作 * 葡萄和西红柿是 ...

最新文章

  1. 当一个View加在一个透明的父View上时,显示会变成透明。
  2. 零基础建站第一季视频分享
  3. android 一个字符串分两行显示_重新梳理Android权限管理
  4. Spring Security with Spring Boot 2.0:使用Servlet堆栈的简单身份验证
  5. 衡量模块独立性的两个定性标准
  6. 大数据(流量表)任务问题清洗生成新分区表过程
  7. (01)FPGA时序分析概念
  8. CentOS 7 巨大变动之 systemd 取代 SysV的Init
  9. 正式发布! .NET开发控件集ComponentOne 新版本加入Blazor UI
  10. VS找不到MFC90d.dll错误
  11. ios控制ios_iOS UIMenuController UIMenuItem
  12. [转]win10 vs2010安装教程(超详细,附下载链接)
  13. 计算机u盘病毒清除方式,清除文件夹exe病毒方法
  14. Qt 配置自动清理中间文件 --- qmake
  15. Java实现调用摄像头拍照
  16. 软件测试用例篇(1)-------针对非软件产品进行测试
  17. 时间管理黄金法则笔记
  18. 文科生本科专业能学计算机吗,请问高中文科生到大学里学“软件技术”这个专业,上课能听懂,跟得上么?...
  19. LEARNING A SAT SOLVER FROM SINGLE-BIT SUPERVISION 2020-05-01
  20. 超融合一体机与一体机的区别

热门文章

  1. 币圈的元宇宙不是元宇宙
  2. MinIO,Zuul
  3. echarts 折线图上标记独立坐标点
  4. inline函数不报重定义错误浅析
  5. 任务1_修改植物大战僵尸关卡和金币
  6. 第二周【项目1-旱冰场造价】
  7. SPA设计与架构-理解单页面Web应用 (埃米顿.A斯科特) 中文pdf扫描版
  8. 快捷实现Vivado的non-project模式
  9. chrome设置微信ua_Chrome模拟微信浏览器UA访问教程
  10. LucettaTM 2 支原体检测