一个composite 模式的问题

这是我的一个用composite模式写的一个ParentAction类:(经过简化)


public class ParentAction implements IAction{
private String actionName;
private int parentId;
private int actionId;
private List childAction;
IDao idao=new DaoFacatory().getDao("Sql");
public ParentAction(int parentId,int actionId,String actionName){
this.parentId=parentId;
this.actionId=actionId;
this.actionName=actionName;
ResultAction ra=new ResultAction();
//中间的访问ibatis的过渡类
ra.setActionId(actionId);
idao.initDao();
List list;
try{
list=idao.getActionList(ra);
//取得数
}catch(SQLException e){
throw new RuntimeException(e);
}
if(list!=null){
this.getSons(list);
}
}
public void getSons(List resultAction){
idao.initDao();
childAction=new ArrayList();
IAction action;
for(int i=0;i<resultAction.size();i++){
ResultAction ra=(ResultAction)resultAction.get(i);
int parentId=ra.getParentId();
int actionId=ra.getActionId();
String actionName=ra.getActionName();
List actionList;
try{
actionList=idao.getActionList(ra);
}catch(SQLException e){
throw new RuntimeException(e);
}
if(actionList.size()>0){
//判断是父结点还是儿子结点
action=new ParentAction(parentId,actionId,actionName);
}else action=new LeafAction(parentId,actionId,actionName);
childAction.add(i,action);
}
}
}

我在这里用了构造函数直接构建了一棵树,可是我在这个类里面封装了数据库,能不能将数据库独立出来,不放在类里面?请高手指点一二。

凡是在构造参数里面代码基本都可以用创建型模式来重构。

创建型模式有工厂模式、Builder模式以及Ioc模式等。