2.用抽象工厂模式实现服装工厂类。 分析:服装工厂能生产出各种各样的衣服,但客户完全不知道这些服装是如何被创建的。如果用抽象工厂模式来实现,可以灵活地添加新的服装类型(如夹克等),且不需要修改客户端的代码,这增加了应用程序的灵活性。用类图显示 uml类图
时间: 2024-10-17 19:12:10 浏览: 31
在使用抽象工厂模式实现服装工厂类时,首先需要创建一个抽象的"服装工厂"接口,如`IFashionFactory`,它声明了一组用于创建不同类型服装的方法:
```java
public interface IFashionFactory {
Dress createDress();
Shirt createShirt();
Jacket createJacket();
}
```
然后,为每种类型的服装(如连衣裙、衬衫和夹克)分别创建具体的工厂类,它们都实现了这个接口:
```java
public class DressFactory implements IFashionFactory {
@Override
public Dress createDress() {
return new Dress(); // 实现细节隐藏
}
}
public class ShirtFactory implements IFashionFactory {
@Override
public Shirt createShirt() {
return new Shirt(); // 实现细节隐藏
}
}
public class JacketFactory implements IFashionFactory {
@Override
public Jacket createJacket() {
return new Jacket(); // 实现细节隐藏
}
}
```
当客户端想要购买衣服时,它并不关心实际创建的是哪个工厂,只需要一个通用的接口:
```java
public class ClothingStore {
private IFashionFactory factory;
public ClothingStore(IFashionFactory factory) {
this.factory = factory;
}
public void purchaseClothing(String type) {
if (type.equals("dress")) {
Dress dress = factory.createDress();
// 使用并处理dress对象
} else if (type.equals("shirt")) {
Shirt shirt = factory.createShirt();
// 使用并处理shirt对象
} else if (type.equals("jacket")) {
Jacket jacket = factory.createJacket();
// 使用并处理jacket对象
}
}
}
```
通过这种方式,我们可以动态地更换工厂,例如引入新的服装类型时,只需创建一个新的工厂类并注册到`ClothingStore`中,而无需改变客户端代码。这就是抽象工厂模式的优势所在。
阅读全文