软件设计之抽象工厂模式

发布时间 2023-10-26 21:30:37作者: 辞楠

类图

代码

package test;
import java.util.Scanner;
public class test3 {
    public static void main(String[] args)
    {
        Factorys factory=null;
        ProductA productA=null;
        ProductB productB=null;
        System.out.println("请输入你想要的产品");
        Scanner sc=new Scanner(System.in);
        String type=sc.next();
        switch (type)
        {
            case "A1":factory=new Factory1();productA=factory.createProductA();productA.info();break;
            case "A2":factory=new Factory2();productA=factory.createProductA();productA.info();break;
            case "B1":factory=new Factory1();productB=factory.createProductB();productB.info();break;
            case "B2":factory=new Factory2();productB=factory.createProductB();productB.info();break;
        }
    }

}
interface Factorys{
    public ProductA createProductA();
    public ProductB createProductB();
}
class Factory1 implements Factorys{
    @Override
    public ProductA createProductA()
    {
        return new ProductA1();
    }
    @Override
    public ProductB createProductB()
    {
        return new ProductB1();
    }
}
class Factory2 implements Factorys{
    @Override
    public ProductA createProductA()
    {
        return new ProductA2();
    }
    public ProductB createProductB()
    {
        return new ProductB2();
    }
}
interface ProductA{
    public void info();
}
class ProductA1 implements ProductA{
    @Override
    public void info()
    {
        System.out.println("这是产品A1");
    }
}
class ProductA2 implements ProductA{
    @Override
    public void info()
    {
        System.out.println("这是产品A2");
    }
}
interface ProductB{
    public 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");
    }
}

运行结果

抽象工厂模式与工厂模式的区别在于工厂模式只能从一个工厂只能生产一种产品,但是抽象工厂模式可以生产多个产品,简单工厂模式只能由一个工厂生产产品。

只有一个工厂(简单工厂模式)-------------------开了分厂生产另一种产品(工厂方法模式)--------------------一个工厂可以生产多个产品(抽象工厂模式)