一个composite 模式的问题

06-04-29 Jdao
这是我的一个用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);
	}
	}
}
<p>

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

    

banq
2006-04-30 18:22
凡是在构造参数里面代码基本都可以用创建型模式来重构。

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

猜你喜欢