我有一个关于对象分层调用的问题。
我有四个班,即A,B,C,D。
D将在C中设置; C将在B中; B将在A。
如果我想在D类中做某事,我必须调用abcdsetWidth(“50%”);(a,b,c,d是A,B,C,D类的实例)。
那样打电话好吗?这会影响性能吗?
答案 0 :(得分:5)
对性能的影响将非常轻微......更大的问题是对面向对象模型的影响。
直接访问类的成员是皱眉的,并且您正在运行NullPointerExceptions的风险。
您应该更担心的是代码的可读性和可维护性。
答案 1 :(得分:1)
这样打电话是完全合法的。我认为它会有性能问题。
但设计并不好。
您应该在代码中使用getter和setter。
例如 :
在您的情况下:a.getB().getC().getD().setWidth("50%")
。
在A类中,将B的变量声明为私有,并且类似于B和C类。 它将确保面向对象设计的数据隐藏和封装原则。