以下设计模式被归类为创建模式。
抽象工厂用于提供用于创建相关对象系列的接口,无需指定具体类,并可用于隐藏特定于平台的类。
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; } }