抽象工厂设计模式
1.核心实现类
**抽象工厂类:**抽象工厂角色,声明一组创建爱你产品的方法,每一个方法对应生成一种产品;
**具体工厂角色:**实现抽象工厂中定义的创建产品的方法,生成一组具体的产品呢,这些产品构成一个产品品种,每一个产品都位于每个产品的等级结构中;
**抽象产品角色:**为没哟个产品声明接口,即该类产品必须所应有的属性或者方法;
**具体产品角色:**定义具体工厂生产的具体产品对象,实现抽象产品接口中声明的业务方法;
2.具体使用
1.抽象工厂角色
public abstract class AbstractFactory {
public abstract AbastractProductA createProductA();
public abstract AbastractProductB createProductB();
}
2,具体工厂角色A
public class RealFactory1 extends AbstractFactory {
@Override
public AbastractProductA createProductA() {
return new RealProductA1();
}
@Override
public AbastractProductB createProductB() {
return new RealProductB1();
}
}
3.具体工厂角色B
public class RealFactory2 extends AbstractFactory {
@Override
public AbastractProductA createProductA() {
return new RealProductA1();
}
@Override
public AbastractProductB createProductB() {
return new RealProductB1();
}
}
4.抽象产品
public interface AbastractProductA {
void method();
}
5.具体产品
public class RealProductA1 implements AbastractProductA{
@Override
public void method() {
System.out.println("我是A1产品");
}
}
6.具体实现
public class Client {
public static void main(String[] args){
AbstractFactory factory=new RealFactory1();
AbastractProductA productA = factory.createProductA();
productA.method();
AbastractProductB productB = factory.createProductB();
productB.method();
AbstractFactory factoryB=new RealFactory2();
AbastractProductA productA1 = factoryB.createProductA();
productA1.method();
AbastractProductB productB1 = factoryB.createProductB();
productB1.method();
}
}