javafx
在为JavaFX开发自定义控件时,我强烈建议您遵循JavaFX核心控件的脚步,并尽可能使控件的API最终化,并将“ final”关键字放在所有方法声明的前面。
例
在FlexGanttFX中,我有很多看起来像这样的代码:
public final Activity getActivityAt(double x, double y) { ... }
public final Row getRowAt(double y) { ... }
public final void setShowLinks(boolean show) { ... }
为什么?
设计控件时,请牢记控件的特定行为。 可以通过使用“最终”来保护此行为。 如果您不使用它,则其他开发人员将继承该控件的子类,他们将覆盖其方法,他们将遇到问题,并将缺陷票证提交给您的问题管理工具。 最后,你会浪费在追逐自己的错误你的时间。 仅由于无法以可预见的方式使用控件而存在的错误。
哪里?
控件类的公共API尤其需要保护,该类正在管理控件的“状态”。 它是您与您的控件用户之间的合同。 对于控件的外观而言,情况并非如此,因为外观是“实现细节”,并且修改外观的人都知道它们正在干扰控件的内部工作。 您仍然希望使其他开发人员可以轻松修改控件的“外观”。
新概念?
以这种方式保护控件并不是一个新概念,但在Swing中并没有太多使用。 现在,使用“最终”的情况更强,因为JavaFX控件比Swing控件更易于观察。 他们通过属性和可观察的集合公开其状态。 这样,应用程序可以通过“监听”控件而不是通过覆盖控件的方法将自身插入控件来对状态更改做出React。 另一个原因是JavaFX中将其完全分离为“控件”和“皮肤”。 Swing组件通常在组件本身中而不是在UI委托中具有“外观”方面(例如paintComponent())。
翻译自: https://www.javacodegeeks.com/2014/07/javafx-tip-4-have-the-final-word.html
javafx