假定康师傅工厂可以生产方便面,白象工厂也可以生产方便面。请用工厂方法设计模式进行设计。(1)画出UML类图;(2)写出相关源码。
时间: 2024-10-28 14:09:51 浏览: 16
Hinf鲁棒控制_Matlab_鲁棒控制工具箱_假定空间桁架设计_闭环系统
5星 · 资源好评率100%
工厂方法设计模式是一种创建型设计模式,它将对象的创建过程从客户端解耦出来,交给工厂来处理。在这种情况下,我们可以创建一个面条产品系列(如方便面),以及各自的工厂来生产这些产品。
(1) UML类图设计:
首先,我们有三个核心角色:
- Product (面条产品): 表示方便面这一类产品,是一个抽象的概念,可以有具体的实现比如康师傅方便面、白象方便面。
- ConcreteProduct (具体产品): 包含各个工厂生产的特定方便面产品。
- Factory (工厂): 提供创建具体产品的方法,这里可以根据品牌创建对应的方便面。
```plaintext
+-------------------+
| Product |
+-------------------+
| - name: String |
+--+
| ConcreteProduct |
+-------------------+
| - factory: Factory |
+-------------------+
| - ... | // 具体的产品属性和行为
+-------------------+
| ConfectioneryFactory |
+-------------------+
| - createProduct(): ConcreteProduct |
+-------------------+
| - ... (康师傅工厂实现) |
+-------------------+
+-------------------+
| BaiXiangFactory |
+-------------------+
| - createProduct(): ConcreteProduct |
+-------------------+
| - ... (白象工厂实现) |
+-------------------+
```
(2) 相关源码(简化版本):
```java
// 抽象面条产品
public abstract class NoodleProduct {
private String name;
public NoodleProduct(String name) {
this.name = name;
}
public abstract void prepare();
}
// 具体方便面产品
public class MasterDealingNoodle extends NoodleProduct {
public MasterDeallingNoodle() {
super("康师傅大师");
}
@Override
public void prepare() {
System.out.println("正在煮" + name);
}
}
public class BaiXiangNoodle extends NoodleProduct {
public BaiXiangNoodle() {
super("白象大骨");
}
@Override
public void prepare() {
System.out.println("正在炖煮" + name);
}
}
// 工厂接口
public interface NoodleFactory {
NoodleProduct createProduct();
}
// 康师傅工厂
public class MasterDealingFactory implements NoodleFactory {
@Override
public NoodleProduct createProduct() {
return new MasterDeallingNoodle();
}
}
// 白象工厂
public class BaiXiangFactory implements NoodleFactory {
@Override
public NoodleProduct createProduct() {
return new BaiXiangNoodle();
}
}
// 客户端
public class Client {
public static void main(String[] args) {
NoodleFactory factory = new MasterDealingFactory(); // 或者 BaiXiangFactory
NoodleProduct noodle = factory.createProduct();
noodle.prepare();
}
}
```
阅读全文