具有指针的内部类与顶级类(多少行太多)?

时间:2015-12-24 04:18:11

标签: java javafx

我是否应该害怕将顶级课程移到内部课程,因为它会使一个类文件生成1.5k +行和50多种方法?

我正在将JavaFX用于宠物项目。我是一名新开发人员(大学一年级)。

我有不同的类来管理我的UI的不同部分。一个用于绘制游戏板,一对用于侧栏标签中的逻辑,一个用于菜单栏等。每个类的一个副本由主ViewController启动。

我发现这很容易管理。问题是我必须将一堆参数传递给每个(从scenebuilder创建的不同UI元素)。这听起来像是使用内部类的理由,对吧?一个"帮手"持有这些元素的对象会更好吗?添加新的变量UI元素变得很麻烦,这似乎是一个不好的迹象。

TLDR;如何在大型项目上管理大型ViewControllers?

2 个答案:

答案 0 :(得分:1)

创建1.5k +行和50个方法长的任何类是面向对象的反模式,称为God object

通常也避免必须传递大量参数是使用内部类的通常接受的原因。您可以在下面链接的页面中查看Oracles指南。 https://docs.oracle.com/javase/tutorial/java/javaOO/whentouse.html

通常,避免传递大量参数的最佳方法是基本上创建类来封装参数,然后传递这些类的实例。

答案 1 :(得分:0)

我不知道您正在处理的问题的具体细节,但从您的问题来看,您实际上似乎遇到了依赖注入问题。

你们所有的班级都相互依赖。例如,帮助程序可能依赖于不同的特定UI元素。现在,您手动连接这些依赖项(在实例化类时将所有依赖项作为构造函数params传递)。

在步骤中依赖注入。如果你在Android上,标准是Dagger,如果你在服务器上,大多数人仍然使用Guice。这里的基本思想是,不是手工连接每个类的所有依赖关系,而是创建一个构造函数并声明你的decencies,框架将完成剩下的工作。

例如:

class A {
   @Inject public A(B b, C c) { ... }
}

class B {
   @Inject public B() { ... }
}

class C {
   @Inject public B() { ... }
}

当你向框架询问A的新实例时,它会知道首先获取B和C并将它们传递给构造函数。