抽象工厂使用抽象类(或者接口)来定义某一类工厂的行为。UML图如下:
适用OrangeFoodFactory来创建橙色的食物:
public class OrangeFoodFactory implements AbstractFactory {
@Override
public Fruit getFruit() {
Fruit fruit =new Orange();//获取橙色的橘子
return fruit;
}
@Override
public Vegetables getVegetables() {
Vegetables vegetables=new Cattor();//获取橙色的胡萝卜
return vegetables;
}
}
使用RedFoodFactory来创建红色的食物:
public class RedFoodFactory implements AbstractFactory {
@Override
public Fruit getFruit() {
Fruit fruit =new Apple();
return fruit;
}
@Override
public Vegetables getVegetables() {
Vegetables vegetables=new Tomato();
return vegetables;
}
}
抽象类中定义了水果和蔬菜的获取方法
public interface AbstractFactory {
public Fruit getFruit();//获取水果
public Vegetables getVegetables();//获取蔬菜
}