提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。
//抽象产品A,AbstractProduct为一类产品对象声明一个接口。
interface ProductA {
void info();
}
//ConcreteProduct定义一个将被相应的具体工厂创建的产品对象,实现AbstractProduct接口。
class ProductA1 implements ProductA {
@Override
public void info() {
System.out.println("产品的信息:A1");
}
}
class ProductA2 implements ProductA {
@Override
public void info() {
System.out.println("产品的信息:A2");
}
}
//抽象产品B,AbstractProduct为一类产品对象声明一个接口。
interface ProductB {
void info();
}
class ProductB1 implements ProductB {
@Override
public void info() {
System.out.println("产品的信息:B1");
}
}
class ProductB2 implements ProductB {
@Override
public void info() {
System.out.println("产品的信息:B2");
}
}
//Client仅使用由AbstractFactory和AbstractProduct类声明的接口。
public class AbstractFactory {
public static void main(String[] args) {
Factory factory1 = new Factory1();
ProductA productA = factory1.createProductA();
productA.info();
Factory factory2 = new Factory2();
ProductB productB = factory2.createProductB();
productB.info();
}
}
//抽象工厂,AbstractFactory声明一个创建抽象产品对象的操作接口。
interface Factory {
ProductA createProductA();
ProductB createProductB();
}
//具体工厂Factory1,ConcreteFactory实现创建具体产品对象的操作。
class Factory1 implements Factory {
@Override
public ProductA createProductA() {
return new ProductA1();
}
@Override
public ProductB createProductB() {
return new ProductB1();
}
}
//具体工厂Factory2,ConcreteFactory实现创建具体产品对象的操作。
class Factory2 implements Factory {
@Override
public ProductA createProductA() {
return new ProductA2();
}
@Override
public ProductB createProductB() {
return new ProductB2();
}
}
其他设计模式详见本专栏其他博文~
特别感谢zst_2001在备考软考期间提供的帮助,贴上博主B站
zst_2001的个人空间