在编程中,我遇到这样的情况:
我有一个类A中有B1和B2属性,B1属性中有个C11和C12属性.B2中有C21和C22属性.
--A
  |--B1
  |  |--C11
  |  |--C12
  |
  |--B2
  |  |--C21
  |  |--C22
现在我C21要操作C11的当前实例,我要一层一层的获取(就是先获取A然后往下获取到C11).
这样感觉很麻烦,是不是我代码写的有问题.
比如我有个JFrame 下有个JDesktopPane,JDesktopPane下有两个JInternalFrame,第一个JInternalFrame有一个JPanel panel1.第二个JInternalFrame下有一个JPanel panel2.panel2上获取事件后,我要操作panel1.这就要一层一层的拿到实例,(如果panel1是个单例,就可以轻松拿到了.但是不是的话有,没有什么好主意,或者是我代码设计的问题....求解释下) java

解决方案 »

  1.   

    为每个对象设置一个id , 将把对像的地址存到A对象中。
    例:
    在A中添加一个Map<String,Object> map
    map.put("B1",B1)
    map.put("C11",C11)
    map.put("C12",C12)
    map.put("B2",B2)
    map.put("C21",C21)
    map.put("C22",C22)
    想要取哪个对象直接从map中根据id来取
      

  2.   

    面向对象的思想,最好还是一层层的get。如果一概放map里,破坏了层次结构,使用map的时候,结构关系不明确,有隐患。
      

  3.   

    原结构还是一样,使用map只是为了便利获取。就像html elemnent 一样,可能通过id获取当前页面的所有对象