一、模式架构
核心类:
public class FruitGardener
{
public static Fruit factory(String which) throws BadFruitException
{
if (which.equalsIgnoreCase("apple"))
{
return new Apple();
}
else if (which.equalsIgnoreCase("strawberry"))
{
return new Strawberry();
}
else
{
throw new BadFruitException("Bad fruit request");
}
}
}
静态方法(所以此模式也叫静态工厂方法)返回的是一个接口Fruit
public interface Fruit
{
void grow();
}
Applp类和Strawberry类实现了Fruit。
public class Apple implements Fruit
{
public void grow()
{
System.out.println("Apple is growing...");
}
}
二、利弊分析
优点:实现简单,思路清晰,不考虑产品的层次结构。
缺点:1 当需要生产的产品太多时,核心类会变得繁杂。
2 如果出现新的产品,核心类需要改动。不符合“开 - 闭”原则。
注:“开 - 闭”原则,要求在系统现有代码无需改动的基础上,扩展其功能。