0%

设计模式-抽象工厂

提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

工厂方法只是用于创建一个对象,而抽象工厂创建的是对象家族,也就是很多对象,而且这些对象是相关的,必须一起创建出来。

类图

3uWXHH.png

实现

1
2
3
public class AbstractProductA {

}
1
2
3
public class AbstractProductB {

}
1
2
3
public class ConcretProductA1 extends AbstractProductA {

}
1
2
3
public class ConcretProductA2 extends AbstractProductA {

}
1
2
3
public class ConcretProductB1 extends AbstractProductB {

}
1
2
3
public class ConcretProductB2 extends AbstractProductB {

}
1
2
3
4
5
6
7
public abstract class AbstractFactory {

public abstract AbstractProductA createProductA();

public abstract AbstractProductB createProductB();

}
1
2
3
4
5
6
7
8
9
10
11
12
13
public class ConcreteFactory1 extends AbstractFactory {

@Override
public AbstractProductA createProductA() {
return new ConcretProductA1();
}

@Override
public AbstractProductB createProductB() {
return new ConcretProductB1();
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
public class ConcreteFactory2 extends AbstractFactory {

@Override
public AbstractProductA createProductA() {
return new ConcretProductA2();
}

@Override
public AbstractProductB createProductB() {
return new ConcretProductB2();
}

}
1
2
3
4
5
6
7
8
9
public class Client {

public static void main(String[] args) {
AbstractFactory factory = new ConcreteFactory1();
AbstractProductA productA = factory.createProductA();
AbstractProductB productB = factory.createProductB();
}

}