package com.github.code4craft.helloworld.creational.abstract_factory; import java.util.HashMap; import java.util.Map; /** * @author yihua.huang@dianping.com */ public class AbstractFactory { public enum Type { Java, DesignPattern; } private static Map<Type, Class<? extends SplitHelloWorldFactory>> map; static { map = new HashMap<Type, Class<? extends SplitHelloWorldFactory>>(); map.put(Type.Java, JavaSplitHelloWorldFactory.class); map.put(Type.DesignPattern, DesignPatternSplitHelloWorldFactory.class); } public static SplitHelloWorldFactory select(Type type) throws IllegalAccessException, InstantiationException { return map.get(type).newInstance(); } }