我遇到一个程序设计问题。比如,我有对象如下public class test {
public static void Main(String[] args) {
ObjLvl1 obj = new ObjLvl1();
//get somedata here with ObjLvl1
}
}public class ObjLvl1 {
ObjLvl2 obj = new ObjLvl2();
}public class ObjLvl2 {
ObjLvl3 obj = new ObjLvl3();
}public class ObjLvl3 {
int somedata;
}
问题是,不在Main里直接调用 ObjLvl3, 和ObjLvl2,只是用 ObjLvl1,
我怎么把 somedata从 ObjLvl3里提取出来。我的唯一的方法是在每个类里写一个get方法,然后一层一层把somedata从ObjLvl3里提取到Main里。还有其他更好的方法么?因为这代码很难维护,以后修改起来也比较麻烦。
public static void Main(String[] args) {
ObjLvl1 obj = new ObjLvl1();
//get somedata here with ObjLvl1
}
}public class ObjLvl1 {
ObjLvl2 obj = new ObjLvl2();
}public class ObjLvl2 {
ObjLvl3 obj = new ObjLvl3();
}public class ObjLvl3 {
int somedata;
}
问题是,不在Main里直接调用 ObjLvl3, 和ObjLvl2,只是用 ObjLvl1,
我怎么把 somedata从 ObjLvl3里提取出来。我的唯一的方法是在每个类里写一个get方法,然后一层一层把somedata从ObjLvl3里提取到Main里。还有其他更好的方法么?因为这代码很难维护,以后修改起来也比较麻烦。
如果ObjLvl3里以后追加了20个变量,你ObjLvl2和 ObjLvl1怎么办?都写个get方法?
从你的描述来说
ObjLvl1使用ObjLvl3,ObjLvl2,Main使用ObjLvl1
Main如果不和ObjLvl3,ObjLvl2打交道,那么ObjLvl3,ObjLvl2的属性或方法访问,只能通过ObjLvl1
提供接口来管理,Main如果想直接和ObjLvl3,ObjLvl2打交道,那么也由ObjLvl1提供接口直接返回ObjLvl3,ObjLvl2对象
商业开发上,尤其是数据对象化(ORM)和处理,会遇到这种复杂问题。
首先 要有 论坛 Forum 论坛里面 有 Thread 也就是相当于我们的一个帖子 Thread 里面又有Message就是我们帖子里有消息。 在领域驱动设计里面 。。我们是这样做得。我们要想得到 Message 的信息 就需要 通过Forum 得到 Thread 在通过Thread 得到 Message 这样是为了保证我们设计的完整性和健全性。
按你的题难道也是这个意思? 为了控制访问 C的属性必须 以A作为入口?
没有确切的语境。所以你可以看成 C++ / Java类的
这个题目貌似很接近啊。数据要从第三层提取到底一层。 那么如果Message里还有东西呢,也就是还有2,3层,这就麻烦了。反正这道题没正确档案。给出你认为是正确的解答,然后说明为什么,然后大家来讨论。
//get somedata here with ObjLvl1
System.out.println(obj.obj.obj.somedata);