浅谈Java设计模式之——抽象工厂模式

版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/a_zhon/article/details/90614321

上一篇文章我们介绍了一下简单工厂模式,这一节就接着来说抽象工厂模式

浅谈Java设计模式之——简单工厂模式

一、什么是简单抽象工厂模式

抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的。抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象。

看了上面一大堆你可能还是没看懂具体是什么意思,下面通过一个具体的案例来说明一下:

二、假设现在我们现在需要工厂生产青苹果红苹果等等苹果的一系列厂品,而不是向简单工厂只生产苹果…

  • 首先我们还是需要定义水果这个父类Fruit.java
public interface Fruit {

    void get();
}

  • 定义苹果类,这里需要注意⚠️的是苹果类不是一个具体的对象了,而是交给子类去具体实现
public abstract class Apple implements Fruit {
    /**
     * 获得苹果
     */
    public abstract void get();
}

  • 接下来就是为水果对象创建抽象类来获取工厂
public interface FruitFactory {

    Fruit getApple();
}

三、创建苹果的族系产品(青苹果、红苹果)

  • GreenApple.java
public class GreenApple extends Apple {

    @Override
    public void get() {
        System.out.println("生产 青苹果");
    }
}
  • RedApple.java
public class RedApple extends Apple {

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

四、接下来就由扩展了 FruitFactory 的工厂类来生成特定的实体类对象(eg:青苹果、红苹果…)

  • 生成青苹果的工厂
public class GreenAppleFactory implements FruitFactory {
    @Override
    public Fruit getApple() {
        return new GreenApple();
    }
}
  • 生成红苹果的工厂
public class GreenAppleFactory implements FruitFactory {
    @Override
    public Fruit getApple() {
        return new RedApple();
    }
}

五、具体的使用

public static void main(String[] args) {
	//生产青苹果的工厂
    GreenAppleFactory greenAppleFactory = new GreenAppleFactory();
    Fruit greenApple = greenAppleFactory.getApple();
    greenApple.get();
    //生产红苹果的工厂
    RedAppleFactory redAppleFactory = new RedAppleFactory();
    Fruit redApple = redAppleFactory.getApple();
    redApple.get();
}
  • 输出的结果
    在这里插入图片描述
展开阅读全文

没有更多推荐了,返回首页