此章节差不多都为伪代码
简单工厂
public class RuleConfigParserFactory {
private static final Map<String, RuleConfigParser> cachedParses = new HashMap<String, RuleConfigParser>();
static {
cachedParses.put("json", new JsonRuleConfigParser());
cachedParses.put("xml", new XmlRuleConfigParse());
cachedParses.put("yaml", new YamlRuleConfigParse());
cachedParses.put("properties", new PropertiesRuleConfigParse());
}
public static IRuleConfigParser createParser(String configFormat) {
if (configFormat ==null || configFormat.isEmpty()) {
return null;
}
IRuleConfigParser ruleConfigParser = cachedParses.get(configFormat);
return ruleConfigParser;
}
}
工厂方法
当对象创建逻辑比较复杂,不只是简单New一下,需要组合其他类对象或着进行一系列初始化,推荐使用工厂方法,将复杂的创建逻辑拆分到多个工厂类中,让每个工厂都不至于过于复杂。
public interface IRuleConfigParserFactory {
IRuleConfigParser createParser();
}
public class JsonRuleConfigParserFactory implements IRuleConfigParserFactory{
@Override
public IRuleConfigParser createParser() {
return new JsonRuleConfigParser();
}
}
···
抽象工厂
可以让工厂负责创建多个不同类型的对象
public interface IConfigParserFactory {
IRuleConfigParser createRuleParser();
ISystemConfigParser createSystemParser();
}