public class VegetableFarm { public static Vegetable getVegetable(String vegetableName) { switch (vegetableName.toLowerCase()) { case "carrot": return new Carrot(); case "potato": return new Potato(); case "tomato": return new Tomato(); } throw new UnsupportedOperationException(); } }蔬菜承担抽象产品角色,定义所有蔬菜共有的属性和行为:
public abstract class Vegetable { protected double weight = 0; public double getWeight() { return weight; } }胡萝卜、土豆和番茄承担具体产品角色,是蔬菜农场实际生产的产品:
public class Carrot extends Vegetable { } public class Potato extends Vegetable { } public class Tomato extends Vegetable { }消费者承担调用者角色,只需要调用工厂方法就可以直接获取具体产品:
Vegetable vegetable = VegetableFarm.getVegetable("Tomato");
原文:http://blog.csdn.net/magnificent_tony/article/details/43835697