设计模式(简单工厂、工厂方法、抽象工厂模式)

设计模式(简单工厂、工厂方法、抽象工厂模式)

一、实验目的
1.熟悉建模工具。
2.掌握简单工厂模式、工厂方法模式、抽象工厂模式,并进行设计应用。

二、实验内容
1.简单工厂模式
使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则返回一个Woman对象,请实现该场景。现需要增加一个新的Robot类,如果传入参数R,则返回一个Robot对象,对代码进行修改并注意女娲的变化。
2.工厂方法模式
海尔工厂(Haier)生产海尔空调(HaierAirCondition),美的工厂(Midea)生产美的空调(MideaAirCondition) 。使用工厂方法模式描述该场景,绘制类图并编程实现。
3.抽象工厂模式
电脑配件生产工厂生产内存、CPU等硬件设备,这些内存、CPU的品牌、型号并不一定相同,根据下面的“产品等级结构-产品族”示意图,使用抽象工厂模式实现电脑配件生产过程并绘制相应的类图,绘制类图并编程实现。

三、题目分析及类图设计
1.题目分析
(1)简单工厂模式:Person接口抽象一个create()方法。Woman、Man和Robot类实现Person接口的create()方法(具体创造某一人种)。Nvwa类作为一个工厂角色,接收xml文件中的参数值确定返回一个具体的人种对象。

(2)工厂方法模式:AirCondition接口抽象一个create()方法,HaierAirCondition类和MideaAirCondition类实现接口AirCondition的create()方法(具体创造某一类空调)。AirConditionFactory接口抽象一个返回AirCondition的produceAirCondition()方法。HaierAirConditionFactory类和MideaAirConditionFactory类实现AirConditionFactory接口的方法,返回一个具体的空调对象。

(3)抽象工厂模式:接口CPU抽象了一个run()方法,接口RAM抽象了一个use()方法,MacCPU类和PcCPU类实现了CPU接口中的run()方法(具体的某一种CPU运行)。MacRAM类和PcRAM类实现了RAM接口中的use()方法(具体某一种RAM在使用)。接口EFactory抽象了一个返回RAM对象的produceRAM()方法和返回CPU对象的produceCPU()方法,MacFactory类实现了EFactory接口中的两个方法,用于返回MacCPU对象和MacRAM对象,PcFactory类实现了EFactory接口中的两个方法,用于返回PcCPU对象和PcRAM对象.

2.类图设计
2.1手绘uml类图
(1)简单工厂模式:
在这里插入图片描述
(2)工厂方法模式:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这三种工厂模式都是用来创建对象的,但它们的实现方式略有不同: 1. 简单工厂模式:由一个工厂类根据传入的参数,决定创建并返回哪种产品类的实例。它的优点在于工厂类集中了所有产品的创建逻辑,客户端只需要知道工厂类即可,不需要关心具体的产品类。但缺点是当需要添加新的产品时,需要修改工厂类的代码,违反了开闭原则。 2. 工厂方法模式:将工厂类抽象成接口或抽象类,每个具体的产品类都对应一个具体的工厂类。客户端需要知道具体的工厂类和产品类,但每个工厂类只负责创建对应的产品,符合单一职责原则。添加新的产品时,只需要添加一个新的具体产品类和它对应的工厂类即可,不需要修改已有代码。 3. 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。每个具体的工厂类可以创建一组相关的产品类。客户端需要知道具体的抽象工厂类和抽象产品类,但不需要知道具体的实现类。添加新的产品族时,需要添加一个新的抽象产品类和对应的具体产品类,以及一个新的抽象工厂类和对应的具体工厂类,不需要修改已有代码。 简单来说,简单工厂模式是在一个工厂类中创建所有产品;工厂方法模式是将工厂类抽象成接口或抽象类,每个具体产品对应一个具体工厂类;抽象工厂模式是提供一个抽象工厂类,每个具体工厂类可以创建一组相关的产品。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值