抽象工厂模式:定义了一个创建对象的接口,让子类决定实例化哪一个类。
抽象工厂模式的优点之一是符合“开放-封闭”原则,即对修改是封闭的,对扩展是开放的。
相比简单工厂模式,抽象工厂模式并没有将对象的生成放在工厂类中,而是放在工厂的子类中。
如果需要添加对象,只需要添加对象的类,并且添加生成对象的工厂则可以,不需要对原来的代码进行修改。
抽象工厂的类图:
public interface Fruit {
public abstract void eat(String sun, String water);
}
public interface Factory {
public abstract Fruit getFruit();
}
public class Apple implements Fruit {
public void eat(String sun, String water) {
}
}
public class AppleFactory implements Factory {
public Fruit getFruit() {
return new Apple();
}
}
public class Bananas implements Fruit {
public void eat(String sun, String water) {
}
}
public class BananasFactory implements Factory {
public Fruit getFruit() {
return new Bananas();
}
}
public class Client {
public static void main(String[] args) {
Fruit apple = new AppleFactory().getFruit();
apple.eat("阳光","水");
Fruit bananas = new BananasFactory().getFruit();
bananas.eat("阳光","水");
}
}