论坛首页 Java企业应用论坛

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

浏览 9953 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (5)
作者 正文
   发表时间:2010-02-05  
看不明白啥意思呢 你这是在干吗啊 也没个注释
0 请登录后投票
   发表时间:2010-02-05   最后修改:2010-02-05
abstract class Item{
  abstract void print(Printer printer);
}


interface Printer {
   void printByX(...);
   void printByY(...);
   void printByZ(...);
}

class SomeConcreteClassX extends Item{
   private Object aProperty;
   private Object anotherProperty;

   @Override
   void print(Print printer) {
     printer.printByX(...);
   }
}



edit:
我的想法是把这些打印策略逻辑封在一个Printer的implementation里面,然后通过集合(也就是楼上有几位说到的树,更广义的讲是一个集合)元素自身通过多态调用不同的逻辑。
在这个Printer的implementation中就可以对那段遍历进行封装成一个private的helper method
0 请登录后投票
   发表时间:2010-02-05   最后修改:2010-02-05
calorie520 写道
非常感谢大家的回复,但主要是对NodeInfo的遍历方式根据不同层次需要递归多次,动态代理这种方式还是不能很好的处理递归层次的问题,不知道大家还有什么好的建议


    private NodeInfo[] getNodInfo(Object id1) {  
        /** 
         * 
这里写点例子给看一下....
没代码....
光说优化....
我又不是业务代表,
不会
         */  
        return null;  
    }   


0 请登录后投票
   发表时间:2010-02-05  
抛出异常的爱 写道
calorie520 写道
非常感谢大家的回复,但主要是对NodeInfo的遍历方式根据不同层次需要递归多次,动态代理这种方式还是不能很好的处理递归层次的问题,不知道大家还有什么好的建议


    private NodeInfo[] getNodInfo(Object id1) {  
        /** 
         * 
这里写点例子给看一下....
没代码....
光说优化....
我又不是业务代表,
不会
         */  
        return null;  
    }   




一点想法:
既然需要对不同的元素进行不同的访问,那么带返回值的callback结合visitor应该是可以解决的。
0 请登录后投票
   发表时间:2010-02-05  
你这是在搞树啊
0 请登录后投票
   发表时间:2010-02-05  
不太明白楼主想做什么,但是如果说要进行你这样的设计是不合理的,可以将重复的操作提取出来,进行重构
0 请登录后投票
   发表时间:2010-02-05  
问题都描述不清楚,就想解决问题了。这年头怪人真多。
0 请登录后投票
   发表时间:2010-02-06  
我想你之所以无法抽象出对不同递归层次的打印方法,是因为不同层次的数据类型不一样吧,建议你列一个数据结构的例子出来,便于大家了解业务,分析解法
就你现在的代码,可以看出好像是有game,team,ord,age 四种数据类型的不同打印方式
0 请登录后投票
   发表时间:2010-02-06  
由于代码是别人写的,没有注释,对不住大家啦,增加了一下注释,大家继续看看
0 请登录后投票
   发表时间:2010-02-06   最后修改:2010-02-06
calorie520 写道
由于代码是别人写的,没有注释,对不住大家啦,增加了一下注释,大家继续看看

有种叫xpath工具
对于你的业务很有帮助

PS:正在学习使用jquery 对于这种事jquery很在行啊...
0 请登录后投票
论坛首页 Java企业应用版

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