Design patterns 抽象工厂
例子
以下设计模式被归类为创建模式。
抽象工厂用于提供用于创建相关对象系列的接口,无需指定具体类,并可用于隐藏特定于平台的类。
interface Tool {
void use();
}
interface ToolFactory {
Tool create();
}
class GardenTool implements Tool {
@Override
public void use() {
//做点什么...
}
}
class GardenToolFactory implements ToolFactory {
@Override
public Tool create() {
//也许需要额外的逻辑来设置...
return new GardenTool();
}
}
class FarmTool implements Tool {
@Override
public void use() {
//做点什么...
}
}
class FarmToolFactory implements ToolFactory {
@Override
public Tool create() {
//也许需要额外的逻辑来设置...
return new FarmTool();
}
}然后将使用某种供应商/生产商,这些供应商/生产商将传递信息,使其能够返回正确类型的工厂实现:
public final class FactorySupplier {
//它可以为您提供的支持类型...
public enum Type {
FARM, GARDEN
};
private FactorySupplier() throws IllegalAccessException {
throw new IllegalAccessException("Cannot be instantiated");
}
public static ToolFactory getFactory(Type type) {
ToolFactory factory = null;
switch (type) {
case FARM:
factory = new FarmToolFactory();
break;
case GARDEN:
factory = new GardenToolFactory();
break;
} //可能会添加一个默认情况来处理传入null的人
return factory;
}
}