JavaFX学习笔记——重要理念的建立与辨析(五)

处理器注册与定义分离

问题

     看过相关教程后,我们肯定对JavaFX在事件处理上,介绍的lambda表达式以及内部类简洁用法印象深刻。但细想后其仍有很大的局限性。

    局限一:不适用与团队开发

            UI程序员与功能开发程序员协作起来困难重重,因为功能开发程序员的对handler功能的每一次修改或扩展,都需要UI程序员对handler注册位置的代码进行同步修改。

    局限二:不适用对于复杂性高的handler不适用

            因为lambda表达式要求,匿名对象只有一个方法,因此要把handler所需要的所有处理全部放进一个方法中,这使得handler中不同子模块的耦合性增大,可读性降低,可重用性直接没有。(对于子模块的重用,java没有局部方法变量这么一说;而对于整个handler的重用,因为是创建的是匿名对象,所以没办法在其他地方再次获得。)

解决方法

     对于解决局限一,需要用外部类,在新文件中按部就班地定义实现了EventHandler<EventType>接口的新类,然后在需要它的文件中import再创建新对象调用。

     对于解决局限二,则不能用lambda表达式,需要用类来为不同子模块定义不同方法。

总结

     在handler不是特别简单或者需要可扩展性和可重用性的情况下,请把事件处理器handler的注册与其定义分离在不同的文件中进行

猜你喜欢

转载自blog.csdn.net/weixin_40861847/article/details/84202325