用抽象工厂模式实现服装工厂功能,要求要有冬季衬衫,夏季衬衫,冬季裤子,夏季裤子这四个产品,并且要面向接口编程,请你写出分析和具体代码
时间: 2024-03-17 16:42:08 浏览: 13
分析:
抽象工厂模式是一种工厂模式,它提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。抽象工厂模式属于对象创建型模式。在抽象工厂模式中,每个具体工厂类只负责创建固定种类的产品,这些产品构成了一个产品族。
根据题目要求,我们需要创建四个产品:冬季衬衫、夏季衬衫、冬季裤子、夏季裤子,它们属于两个产品族:夏季系列和冬季系列。因此,我们需要定义两个抽象工厂接口:夏季服装工厂和冬季服装工厂,每个工厂接口都应该有创建衬衫和裤子的方法,具体实现交给具体工厂类去完成;同时,我们需要定义两个抽象产品接口:衬衫和裤子,具体实现交给具体产品类去完成。
具体代码如下:
```java
// 抽象产品接口:衬衫
public interface Shirt {
void show();
}
// 具体产品类:夏季衬衫
public class SummerShirt implements Shirt {
@Override
public void show() {
System.out.println("生产夏季衬衫。");
}
}
// 具体产品类:冬季衬衫
public class WinterShirt implements Shirt {
@Override
public void show() {
System.out.println("生产冬季衬衫。");
}
}
// 抽象产品接口:裤子
public interface Trousers {
void show();
}
// 具体产品类:夏季裤子
public class SummerTrousers implements Trousers {
@Override
public void show() {
System.out.println("生产夏季裤子。");
}
}
// 具体产品类:冬季裤子
public class WinterTrousers implements Trousers {
@Override
public void show() {
System.out.println("生产冬季裤子。");
}
}
// 抽象工厂接口:夏季服装工厂
public interface SummerClothesFactory {
Shirt createShirt();
Trousers createTrousers();
}
// 具体工厂类:夏季服装工厂
public class SummerClothesFactoryImpl implements SummerClothesFactory {
@Override
public Shirt createShirt() {
return new SummerShirt();
}
@Override
public Trousers createTrousers() {
return new SummerTrousers();
}
}
// 抽象工厂接口:冬季服装工厂
public interface WinterClothesFactory {
Shirt createShirt();
Trousers createTrousers();
}
// 具体工厂类:冬季服装工厂
public class WinterClothesFactoryImpl implements WinterClothesFactory {
@Override
public Shirt createShirt() {
return new WinterShirt();
}
@Override
public Trousers createTrousers() {
return new WinterTrousers();
}
}
```
使用示例:
```java
public class Client {
public static void main(String[] args) {
// 创建夏季服装工厂
SummerClothesFactory summerFactory = new SummerClothesFactoryImpl();
// 创建夏季衬衫
Shirt summerShirt = summerFactory.createShirt();
summerShirt.show();
// 创建夏季裤子
Trousers summerTrousers = summerFactory.createTrousers();
summerTrousers.show();
// 创建冬季服装工厂
WinterClothesFactory winterFactory = new WinterClothesFactoryImpl();
// 创建冬季衬衫
Shirt winterShirt = winterFactory.createShirt();
winterShirt.show();
// 创建冬季裤子
Trousers winterTrousers = winterFactory.createTrousers();
winterTrousers.show();
}
}
```
输出结果:
```
生产夏季衬衫。
生产夏季裤子。
生产冬季衬衫。
生产冬季裤子。
```