public interface Fruit //水果接口
{
void grow();
void harvest();
void plant();
}
public class Apple implements Fruit
{
private int treeAge;
public grow(){}
public harvest(){}
public plant(){}
}
public class Grape implements Fruit
{
private boolean seedless;
public void grow(){}
public void harvest(){}
public void plant(){}
}
public class FruitGardener //园丁
{
public static Fruit factory(String which)
{
if(which.equalsIgnoreCase("apple")){
return new Apple();
}
else if(which.equalsIgnoreCase("grape")){
return new Grape();
}
}
}
所涉及到的角色:工厂角色,抽象产品角色,具体产品角色。
统一由FruitGardener.factory的工厂方法来生产。该模式如果需要加入新的水果类时,工厂的代码需要改变。园丁成为了核心人物,如果他们不能工作,整个过程都受影响。