上一篇介绍了策略模式结合静态代理对策略进行应用,这里介绍结合简单工厂对策略模式的应用。
定义策略枚举:
public enum DaoType { /** * hibernate */ HIBERNATE, /** * ibatits */ IBATITS }
定义策略工厂:
/**
* @author alex * */ public class StratagemFactory { private AbstractDao dao; public StratagemFactory(DaoType type){ if(type != null){ switch(type){ case HIBERNATE : dao = new HibernateDao(); break; case IBATITS : dao = new IbatitsDao(); break; } } } public Object getObject(){ return dao.getById(); } }
client中应用策略:
public static void testStratagemFactory(){ // StratagemFactory stratagem = new StratagemFactory(DaoType.HIBERNATE); StratagemFactory stratagem = new StratagemFactory(DaoType.IBATITS); System.out.println(stratagem.getObject()); }