🔍目的
提供一个用于创建相关对象家族的接口,而无需指定其具体类
🔍解释
真实世界例子
要创建一个王国,我们需要具有共同主题的对象。精灵王国需要精灵国王、精灵城堡和精灵军队,而兽人王国需要兽人国王、兽人城堡和兽人军队。王国中的对象之间存在依赖关系。
通俗的说
一个将单个但相关/从属的工厂分组在一起而没有指定其具体类别的工厂。
维基百科
抽象工厂模式提供了一种封装一组具有共同主题的单个工厂而无需指定其具体类的方法
程序实例
按照上述的真实世界案例。首先,我们为王国中的对象提供了一些接口和实现。
public interface Castle {
String getDescription();
}
public interface King {
String getDescription();
}
public interface Army {
String getDescription();
}
// Elven implementations ->
public class ElfCastle implements Castle {
static final String DESCRIPTION = "This is the Elven castle!";
@Override
public String getDescription() {
return DESCRIPTION;
}
}
public class ElfKi