我对编程很新,我对类访问有疑问。假设我使用一堆公共变量和公共方法创建了一个名为TheClass的类。然后我创建了几个需要访问TheClass实例的方法/变量的其他顶级类。所以,当我创建一个TheClass实例并且我想通过其他顶级类访问该实例的变量时,我理解我可以:
在创建它们时,将新的TheClass实例传递给每个其他类的构造函数,以便它们可以像这样访问TheClass实例中的那些变量:
TheClass theClass = new TheClass();
OtherClass otherClass = new OtherClass(theClass);
或者,我可以将所有其他类嵌套在TheClass中,从而让他们可以访问theClass实例的变量......我想?
最后,我可以使TheClass的变量/方法变为静态,从而让其他类在TheClass之外访问它们,但这并不好,因为我需要访问正在运行的TheClass实例的变量。
我问的原因是因为我最近创建了我的第一个大程序,并且我正在将一个类对象的实例传递给大量其他类,并且它只是跟着它变得非常繁琐。我觉得自己做错了什么。我是否忽略了从其他顶级类访问类的实例变量方面的巨大内容?
我距离理解Java编程的基础还有很长的路要走,但这是一个不断浮出水面的问题所以我想我会在这里问一下。
答案 0 :(得分:2)
这是一个常见问题,其中一个原因就是singleton pattern
,dependency injection
和application context
(这只是单身人士的变种)之类的东西如此受欢迎。
它们都允许您始终最小化对象的传递。
第一步是架构。如果你的继承和组合正确,它会减少这一点 - 尽管它仍然存在。
下一个选项始终是单身人士。 (应用程序上下文只使用一个Singleton然后指向该Singleton中的其他资源)。最近,依赖注入是最受欢迎的路径,因为它也使单元测试变得更容易。