Java 在不同包中的两个不同类之间设置交互

Java 在不同包中的两个不同类之间设置交互,java,listview,interface,javafx,listener,Java,Listview,Interface,Javafx,Listener,我有这样的想法: 我需要知道连接互动的最佳实践是什么 在左边,我们有一个RoleSlot,由一名指定员工和1-5个ProjectRoles组成。如果我点击其中一个项目角色,那么我们可以在右边查看它的项目职责 问题是,我应该怎么做 此ProjectManager类和RoleSlot类位于不同的包中 我应该: 为ProjectManager类中的每个小ListView设置一个侦听器?这需要以某种方式访问RoleSlot的私有ListView 或者我应该让ProjectManager实现RoleSlo

我有这样的想法:

我需要知道连接互动的最佳实践是什么

在左边,我们有一个RoleSlot,由一名指定员工和1-5个ProjectRoles组成。如果我点击其中一个项目角色,那么我们可以在右边查看它的项目职责

问题是,我应该怎么做

此ProjectManager类和RoleSlot类位于不同的包中

我应该:

为ProjectManager类中的每个小ListView设置一个侦听器?这需要以某种方式访问RoleSlot的私有ListView

或者我应该让ProjectManager实现RoleSlotInterface并定义一个类似handleSelectedRole的方法吗

还是有其他更好的选择


如果可能的话,我想知道利弊。更干净的代码是更好的代码。

我会在RoleSlot类上公开一个只读selectedRoleProperty,在ProjectResp类上公开一个roleProperty。我会在ProjectManager类中设置它们之间的绑定


请看另一个问题的相关答案,该问题讨论了如何实现and。这与你的问题并不完全相同,但可能会让你对如何处理你的案件有所了解。
class RoleSlot {
    public ReadOnlyObjectProperty<ProjectRole> selectedRoleProperty();
}

class ProjectResp {
    public ObjectProperty<ProjectRole> roleProperty();
}

class ProjectManager {
    private final RoleSlot roleSlot;
    private final ProjectResp projectResp;

    public ProjectManager() {
        roleSlot = ...;
        projectResp = ...;
        projectResp.roleProperty().bind(roleSlot.selectedRoleProperty());
    }
}