设计模式之-创建型-抽象工厂模式
# 前言
抽象工厂模式是一种创建型模式,它提供了一种方法来创建一组相关或相互依赖对象,而无需指定它们具体的类。这种模式通常被用来创建一系列的对象
# 场景
一个系统要独立于它的产品的创建、组合和表示时;
一个系统要由多个产品系列中的一个来配置时;
当你要强调一系列相关的产品对象的设计以便进行联合使用时;
当你提供一个产品类库,而只想显示它们*接口而不是实现时。
# 案例
比如某工厂生产产品族A和B,而使用者也不知道他具体是哪个具体产品
// 抽象产品A
interface AbstractProductA {
void operation();
}
1
2
3
2
3
// 具体产品A1
class ConcreteProductA1 implements AbstractProductA {
public void operation() {
System.out.println("产品A1的操作方法");
}
}
1
2
3
4
5
2
3
4
5
// 具体产品A2
class ConcreteProductA2 implements AbstractProductA {
public void operation() {
System.out.println("产品A2的操作方法");
}
}
1
2
3
4
5
2
3
4
5
// 抽象产品B
interface AbstractProductB {
void operation();
}
1
2
3
2
3
// 具体产品B1
class ConcreteProductB1 implements AbstractProductB {
public void operation() {
System.out.println("产品B1的操作方法");
}
}
1
2
3
4
5
2
3
4
5
// 具体产品B2
class ConcreteProductB2 implements AbstractProductB {
public void operation() {
System.out.println("产品B2的操作方法");
}
}
1
2
3
4
5
2
3
4
5
// 抽象工厂
interface AbstractFactory {
AbstractProductA createProductA();
AbstractProductB createProductB();
}
1
2
3
4
2
3
4
// 具体工厂
class ConcreteFactory1 implements AbstractFactory {
public AbstractProductA createProductA() {
return new ConcreteProductA1();
}
public AbstractProductB createProductB() {
return new ConcreteProductB1();
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
// 客户端代码
public class Client {
public static void main(String[] args) {
AbstractFactory factory = new ConcreteFactory1();
AbstractProductA productA = factory.createProductA();
AbstractProductB productB = factory.createProductB();
productA.operation();
productB.operation();
}
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
最后更新时间: 2024/06/04, 22:06:23