抽象工厂模式

1介绍


在上一讲工厂方法模式中我们发现卖水果现在特别火,于是我们也决定加盟个水果店卖水果。这样抽象工厂模式就诞生了。

抽象工厂模式:该模式是创建型模式的一种。抽象工厂模式是工厂方法模式的升级版,抽象工厂模式是创建不同的工厂,不同的工厂再去创建具体产品。

抽象工厂模式一般也有四种角色:抽象工厂、具体工厂、抽象产品和具体产品。

2 实现


一步:创建工厂接口

FruitFactory.class

public interface FruitFactory {
    
    public Fruit getApple();
    public Fruit getBanana();
    
}

二步:创建具体工厂

FactoryA.class / FactoryB.class

public  class FactoryA implements FruitFactory {

    @Override
    public Fruit getApple() {
        return new FactoryAApple();
    }

    @Override
    public Fruit getBanana() {
        return new FactoryABanana();
    }

}
public  class FactoryB implements FruitFactory {

    @Override
    public Fruit getApple() {
        return new FactoryBApple();
    }

    @Override
    public Fruit getBanana() {
        return new FactoryBBanana();
    }
}

三步:创建产品接口

Fruit.class

public interface Fruit {
    public void get();
}

四步:创建产品抽象类

Apple.class / Banana.class

public abstract class Apple implements Fruit{

    public abstract void get();
    
}
public abstract class Banana implements Fruit{
    
    public abstract void get();

}

五步:创建具体产品类

FactoryAApple.class / FactoryABanana.class / FactoryBApple.class / FactoryBBanana.class

public class FactoryAApple extends Apple{

    @Override
    public void get() {
        System.out.println("工厂  A  生产苹果");
    }

}
public class FactoryABanana extends Apple{

    @Override
    public void get() {
        System.out.println("工厂  A  生产香蕉");
    }

}
public class FactoryBApple extends Apple{

    @Override
    public void get() {
        System.out.println("工厂  B  生产苹果");
    }

}
public class FactoryBBanana extends Apple{

    @Override
    public void get() {
        System.out.println("工厂  B  生产香蕉");
    }

}

六步:测试

MainClass.class

public class MainClass {
    public static void main(String[] args) {
        //创建FactoryA工厂
        FruitFactory factory = new FactoryA();
        //生产苹果
        Fruit apple = factory.getApple();
        apple.get();
        //生产香蕉
        Fruit banana = factory.getBanana();
        banana.get();
    }
}

抽象工厂模式_第1张图片
运行结果

抽象工厂模式相对于工厂方法模式来说,其可以实现多个具体工厂的产生,每个工厂都可以生产相应的产品。而工厂方法模式只能是一个具体的工厂。当抽象工厂模式中只剩下一个具体的工厂时便变成了工厂方法模式,两者之间是可以转换的,但他们的目的都是为了降低耦合度。

上一篇:工厂方法模式
下一篇:单例模式

你可能感兴趣的:(抽象工厂模式)