上一篇文章我们介绍了一下简单工厂模式
,这一节就接着来说抽象工厂模式
浅谈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();
}
- 输出的结果