抽象工厂模式java
时间: 2024-02-23 15:55:04 浏览: 77
抽象工厂模式是一种创建型设计模式,它提供了一种创建一系列相关或相互依赖对象的接口,而无需指定具体实现类。该模式通过定义一个抽象工厂接口,然后在具体的工厂类中实现该接口,从而创建不同类型的对象。
在Java中,抽象工厂模式通常由以下几个角色组成:
1. 抽象工厂(Abstract Factory):定义了创建一系列产品对象的接口,它包含多个创建产品的抽象方法。
2. 具体工厂(Concrete Factory):实现了抽象工厂接口,负责创建具体的产品对象。
3. 抽象产品(Abstract Product):定义了产品对象的接口,可以是一个抽象类或接口。
4. 具体产品(Concrete Product):实现了抽象产品接口,是具体工厂创建的对象。
下面是一个简单的抽象工厂模式的示例代码:
```java
// 抽象产品A
interface ProductA {
void operationA();
}
// 具体产品A1
class ConcreteProductA1 implements ProductA {
@Override
public void operationA() {
System.out.println("具体产品A1的操作");
}
}
// 具体产品A2
class ConcreteProductA2 implements ProductA {
@Override
public void operationA() {
System.out.println("具体产品A2的操作");
}
}
// 抽象产品B
interface ProductB {
void operationB();
}
// 具体产品B1
class ConcreteProductB1 implements ProductB {
@Override
public void operationB() {
System.out.println("具体产品B1的操作");
}
}
// 具体产品B2
class ConcreteProductB2 implements ProductB {
@Override
public void operationB() {
System.out.println("具体产品B2的操作");
}
}
// 抽象工厂
interface AbstractFactory {
ProductA createProductA();
ProductB createProductB();
}
// 具体工厂1
class ConcreteFactory1 implements AbstractFactory {
@Override
public ProductA createProductA() {
return new ConcreteProductA1();
}
@Override
public ProductB createProductB() {
return new ConcreteProductB1();
}
}
// 具体工厂2
class ConcreteFactory2 implements AbstractFactory {
@Override
public ProductA createProductA() {
return new ConcreteProductA2();
}
@Override
public ProductB createProductB() {
return new ConcreteProductB2();
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
AbstractFactory factory1 = new ConcreteFactory1();
ProductA productA1 = factory1.createProductA();
ProductB productB1 = factory1.createProductB();
productA1.operationA();
productB1.operationB();
AbstractFactory factory2 = new ConcreteFactory2();
ProductA productA2 = factory2.createProductA();
ProductB productB2 = factory2.createProductB();
productA2.operationA();
productB2.operationB();
}
}
```
在上述示例中,抽象工厂接口`AbstractFactory`定义了创建产品A和产品B的方法。具体工厂`ConcreteFactory1`和`ConcreteFactory2`分别实现了抽象工厂接口,负责创建具体的产品对象。抽象产品接口`ProductA`和`ProductB`定义了产品对象的操作方法,具体产品类`ConcreteProductA1`、`ConcreteProductA2`、`ConcreteProductB1`和`ConcreteProductB2`实现了抽象产品接口。
通过使用抽象工厂模式,客户端可以通过抽象工厂接口来创建一系列相关的产品对象,而无需关心具体的产品实现类。
阅读全文