论坛首页 Java企业应用论坛

挑战大家的设计,看看有什么好方法?不好描述,大家耐心一点看代码

浏览 9954 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (5)
作者 正文
   发表时间:2010-02-05   最后修改:2010-02-06

 

/**
 * NodeInfo结构
 *
 */
public final class NodeInfo implements java.lang.Cloneable
{
    public long id1;
    public String sName;
    public String sNameId;
    public long id2;
}

/**
 * printByGame方法使用NodeInfo第一层的数据,进行数据库操作或文件操作
 * 
 */
public void printByGame(NodeInfo node, String path, String file)

/**
 * printByOrd方法需要从NodeInfo中只获取第二层数据,先进行第一层遍历获取第二层数据
 * 
 */
public void printByOrd(NodeInfo node, String path, String file) throws Exception
{
	NodeInfo[] nodeinfo = getNodInfo(node.id1);
	for (NodeInfo nodeInfo : nodeinfo)
	{
		printOrd(nodeInfo, path, file);
	}
}

/**
 * printOrd方法使用NodeInfo第二层的数据,进行数据库操作或文件操作
 * 
 */
public void printOrd(NodeInfo node, String path, String file)

/**
 * printByTeam方法需要从NodeInfo中只获取第三层数据,先进行第一层遍历获取第二层数据
 * 
 */
public void printByTeam(NodeInfo node, String path, String file)
			throws Exception
{
	NodeInfo[] nodeinfo = getNodInfo(node.id1);
	for (NodeInfo nodeInfo : nodeinfo)
	{
		printTeam(nodeInfo, path, file);
	}

}

/**
 * printByTeam方法需要从NodeInfo中只获取第三层数据,先进行第二层遍历获取第三层数据
 * 
 */
private void printTeam(NodeInfo node, String path, String file) throws Exception
{
	NodeInfo[] nodeinfo = getNodInfo(node.id1);
	for (NodeInfo nodeInfo : nodeinfo)
	{
		printTeam(nodeInfo, node.sNameId, path, file);
	}
}

/**
 * printTeam方法使用NodeInfo第三层的数据,进行数据库操作或文件操作
 * 
 */
public void printTeam(NodeInfo node, String ord, String path, String file)


/**
 * printByAge方法需要从NodeInfo中只获取第四层数据,先进行第一层遍历获取第二层数据
 * 
 */
public void printByAge(NodeInfo node, String path, String file) throws Exception
{
	NodeInfo[] nodeinfo = getNodInfo(node.id1);
	for (NodeInfo nodeInfo : nodeinfo)
	{
		printage(nodeInfo, path, file);
	}
}

/**
 * printByAge方法需要从NodeInfo中只获取第四层数据,进行第二层遍历获取第三层数据
 * 
 */
private void printage(NodeInfo node, String path, String file) throws Exception
{
	NodeInfo[] nodeinfo = getNodInfo(node.id1);
	for (NodeInfo nodeInfo : nodeinfo)
	{
		printage(nodeInfo, node.sNameId, path, file);
	}
}
/**
 * printByAge方法需要从NodeInfo中只获取第四层数据,进行第三层遍历获取第四层数据
 * 
 */
private void printage(NodeInfo node, String ord, String path, String file) throws Exception
{
	NodeInfo[] nodeinfo = getNodInfo(node.id1);
	for (NodeInfo nodeInfo : nodeinfo)
	{
		printage(nodeInfo, ord, node.sNameId, path, file);
	}
}

/**
 * printByAge方法使用NodeInfo第四层的数据,进行数据库操作或文件操作
 * 
 */
public void printage(NodeInfo node, String ord, String team, String path,String file)
   发表时间:2010-02-05  
这样的排版,你是在挑战大家的眼力,还是忍耐力
0 请登录后投票
   发表时间:2010-02-05  
发代码格式话一下好吧,也是对自己负责!!
0 请登录后投票
   发表时间:2010-02-05  
重新更新了一下,大家见谅
0 请登录后投票
   发表时间:2010-02-05  
你是不是要打印一棵树啊
0 请登录后投票
   发表时间:2010-02-05  
类似一棵树
0 请登录后投票
   发表时间:2010-02-05   最后修改:2010-02-05
          
         
import java.lang.reflect.InvocationHandler;          
import java.lang.reflect.Method;          
import java.lang.reflect.Proxy;          


public class DynamicProxy implements InvocationHandler{          
              
    private Object object;           
    public Object bindRelation(Object object){           
        this.object = object;          
        return Proxy.newProxyInstance(object.getClass().getClassLoader(), object.getClass().getInterfaces(),this);           
    }           
     public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {           
      
            Object result = method.invoke(object, args); 
            
            NodeInfo[] nodeinfo = getNodInfo(((NodeInfo)args[0]).id1);  
            for (NodeInfo nodeInfo : nodeinfo)  
            {  
                method.invoke(nodeInfo, args[0], args[1]);  
            }
        return result;          
    }
    private NodeInfo[] getNodInfo(Object id1) {
        /**
         * aabb
         */
        return null;
    }          
         
}   
0 请登录后投票
   发表时间:2010-02-05  
首先,建议使用标准的javadoc来规范代码样式和写注释
其次,要为输入和输出提供必要的说明
再次,判断、循环、try语句之前要说明自己要干什么。
最后,难以维护的代码没有任何讨论价值。
0 请登录后投票
   发表时间:2010-02-05  
我粗略看下代码,所有代码基本都这个格式
NodeInfo[] nodeinfo = getNodInfo(node.id1);  
for (NodeInfo nodeInfo : nodeinfo){  
  printSomething...
}  

我抛砖引玉一下是不是把这个代码模板提出来,其中的方法利用继承和多态整一下(或许比较多余吧)。
刚才看上面老抛的想法,利用动态代理在调用的这个方法的时候为这个方法加上上面的模板应该也是个不错的方法。
0 请登录后投票
   发表时间:2010-02-05   最后修改:2010-02-05
非常感谢大家的回复,但主要是对NodeInfo的遍历方式根据不同层次需要递归多次,动态代理这种方式还是不能很好的处理递归层次的问题,不知道大家还有什么好的建议
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics