上一篇介绍了策略模式结合静态代理对策略进行应用,这里介绍结合简单工厂对策略模式的应用。
定义策略枚举:
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());
}