学习设计模式-创建型-工厂模式

108 阅读1分钟

此章节差不多都为伪代码

简单工厂

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();
}