假设我们有两个工厂,分别生产产品和礼品。有两个品牌的产品和礼品,由两个具体工厂创建:FactoryA和FactoryB。请绘制一个UML类图来说明类层次结构。
时间: 2024-10-12 12:09:04 浏览: 5
为了表示这个类层次结构,我们可以使用UML类图,其中包含以下元素:
1. **Product** (产品) - 它是一个抽象类或接口,代表所有产品的通用特性。可能有方法如`getName()`、`getDescription()`等。
2. **Gift** (礼品) - 另一个抽象类或接口,代表所有礼品的共性,同样可以有共享的方法。
3. **FactoryA** 和 **FactoryB** - 两个具体的工厂类,每个都有能力创建特定品牌的产品或礼品。它们可能是`ProductFactory`和`GiftFactory`的实例,并实现了`createProduct()`和`createGift()`方法。
4. **Brand** - 这是一个枚举或接口,定义了产品和礼品的品牌,例如`Brand.A`和`Brand.B`。
5. **ConcreteProductA** 和 **ConcreteProductB** - 分别对应于不同的产品品牌,继承自`Product`并具体实现方法,比如`BrandAProduct`和`BrandBProduct`。
6. **ConcreteGiftA** 和 **ConcreteGiftB** - 类似地,这些是`Gift`的子类,对应不同的礼品品牌。
类图的具体布局可能会如下所示:
```
+-----------------+
| Product |
+-----------------+
| +getName() |
| +getDescription()|
+-----------------+
|
+-------------------+
| Brand |
+-------------------+
| +A |
| +B |
+-------------------+
|
+---------+ +--------+
| Factory | | Factory |
+---------+ +--+------------+
| |
+--------+ +--------+
| ConcreteProductA | ConcreteGiftA |
+------------------+-------------+
| |
+--------+ +--------+
| ConcreteProductB | ConcreteGiftB |
+------------------+-------------+
```