抽象工厂模式 java代码
时间: 2023-10-18 22:08:56 浏览: 86
抽象工厂模式代码
以下是一个简单的Java实现抽象工厂模式的代码示例:
```java
// 抽象产品接口
interface ProductA {
void use();
}
interface ProductB {
void eat();
}
// 具体产品类 A1
class ConcreteProductA1 implements ProductA {
@Override
public void use() {
System.out.println("使用 A1 产品");
}
}
// 具体产品类 A2
class ConcreteProductA2 implements ProductA {
@Override
public void use() {
System.out.println("使用 A2 产品");
}
}
// 具体产品类 B1
class ConcreteProductB1 implements ProductB {
@Override
public void eat() {
System.out.println("吃 B1 产品");
}
}
// 具体产品类 B2
class ConcreteProductB2 implements ProductB {
@Override
public void eat() {
System.out.println("吃 B2 产品");
}
}
// 抽象工厂接口
interface AbstractFactory {
ProductA createProductA();
ProductB createProductB();
}
// 具体工厂类1,用于生产A1和B1产品
class ConcreteFactory1 implements AbstractFactory {
@Override
public ProductA createProductA() {
return new ConcreteProductA1();
}
@Override
public ProductB createProductB() {
return new ConcreteProductB1();
}
}
// 具体工厂类2,用于生产A2和B2产品
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.use();
productB1.eat();
AbstractFactory factory2 = new ConcreteFactory2();
ProductA productA2 = factory2.createProductA();
ProductB productB2 = factory2.createProductB();
productA2.use();
productB2.eat();
}
}
```
在这个示例中,我们定义了两个具体的产品类,分别是ProductA和ProductB。然后定义了一个抽象工厂接口AbstractFactory,其中包含了两个方法createProductA和createProductB,分别用于生产ProductA和ProductB的实例。
接着我们定义了两个具体的工厂类ConcreteFactory1和ConcreteFactory2,分别用于生产不同的产品。其中ConcreteFactory1可以生产ConcreteProductA1和ConcreteProductB1,而ConcreteFactory2可以生产ConcreteProductA2和ConcreteProductB2。
在客户端代码中,我们可以根据需要选择不同的工厂类来生产不同的产品,然后使用这些产品的方法。这样就实现了抽象工厂模式。
阅读全文