使用场景:创建的对象分类 规则更加复杂。针对情形设计对象层级。
举例:
- 针对规则配置解析器
- json
- xml
- yaml
- properties
- 针对系统配置解析器
- json
- xml
- yaml
- properties
实现说明:让一个工厂负责创建多种不同类型的对象
demo代码:
public interface IConfigParserFactory {
IRuleConfigParser createRuleParser();
ISystemConfigParser createSystemParser();
}
public class JsonConfigParserFactory implements IConfigParserFactory {
@Override
public IRuleConfigParser createRuleParser() {
return new JsonRuleConfigParser();
}
@Override
public ISystemConfigParser createSystemParser() {
return new JsonSystemConfigParser();
}
}
public class XmlConfigParserFactory implements IConfigParserFactory {
@Override
public IRuleConfigParser createRuleParser() {
return new XmlRuleConfigParser();
}
@Override
public ISystemConfigParser createSystemParser() {
return new XmlSystemConfigParser();
}
}
public interface ISystemConfigParser {
/**
* 解析文件
* @param configText
* @return
*/
RuleConfig parse(String configText);
}
public class JsonSystemConfigParser implements ISystemConfigParser {
@Override
public RuleConfig parse(String configText) {
return null;
}
}
public class XmlSystemConfigParser implements ISystemConfigParser {
@Override
public RuleConfig parse(String configText) {
return null;
}
}
工厂模式总结:针对对象的创建逻辑复杂而可以使用的设计模式;
- 根据不同的规则去创建不同对象;创建逻辑简单使用简单工厂即可;复杂可以使用工厂方法,将复杂逻辑单独放到各自的工厂中实现;
- 不需要根据不同的类型创建对象,但是单个对象的创建过程较复杂,也可以考虑使用工厂模式,将对象的创建过程封装到工厂中;