概述
仔细阅读完,可以发现工厂方法和抽象工厂之间的不同
类图
示例
代码
/**
* @ClassName: AbstractFactory
* @Author: 楠
* @Description: 抽象工厂设计模式
*/
public class AbstractFactory {//相当于client
public static void main(String[] args) {
AbstractCreator creator=new CreatorOne();
creator.creatPartA();
creator.creatPartB();
}
}
//零件A
interface AbstractPartA{
void showName();
}
//零件B
interface AbstractPartB{
void showName();
}
//one类型零件A
class PartAOne implements AbstractPartA{
@Override
public void showName() {
}
}
//One类型零件B
class PartBOne implements AbstractPartB{
@Override
public void showName() {
}
}
//Two类型零件A
class PartATwo implements AbstractPartA{
@Override
public void showName() {
}
}
//Two类型零件B
class PartBTwo implements AbstractPartB{
@Override
public void showName() {
}
}
//抽象工厂
interface AbstractCreator{
AbstractPartA creatPartA();
AbstractPartB creatPartB();
}
//生成One类型工厂
class CreatorOne implements AbstractCreator{
@Override
public AbstractPartA creatPartA() {
return new PartAOne();
}
@Override
public AbstractPartB creatPartB() {
return new PartBOne();
}
}
//生成Two类型工厂
class CreatorTwo implements AbstractCreator{
@Override
public AbstractPartA creatPartA() {
return new PartATwo();
}
@Override
public AbstractPartB creatPartB() {
return new PartBTwo();
}
}