gpt4 book ai didi

java - 在 Java 中的 MVC View 之间进行交互的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-29 03:45:51 24 4
gpt4 key购买 nike

我有 2 个 JPanel:Panel_SPanel_P。第一个监听 Station 事件,第二个监听 Passenger 事件。创建新乘客时,会将其添加到 Panel_P 中的 JList。当乘客通过 goToStation 完成“前往”车站并通过 station.addPassenger(this); 排队时,车站的事件 fireAddPassengerEvent 被触发并且乘客被添加到 Panel_S 中的 JList。现在,我需要了解如何从 Panel_P 中的 JList 中删除乘客,因为它完成了“出发”并进入了车站的队列。实现这个的正确方法是什么?一旦Panel_S将乘客添加到其列表中,Panel_S是否应该“告诉”Panel_P将该乘客从其列表中删除?

如果您不明白我的问题,请告诉我,我会尽力解释清楚。

public class Passenger extends Thread {
private Station station;
private Vector<PassengerEventsViewListener> viewListeners;

public Passenger(Station station)
{
this.station = station;
}
private void getInLineInStation()
{
station.addPassenger(this);
}
private void fireArrivedToStationEvent(EventArgs<Passenger> args)
{
for (PassengerEventsViewListener l : viewListeners) {
l.arrivedToStationEvent(args);
}
}
private void goToStation()
{
//going
fireArrivedToStationEvent(this);
}

@Override
public void run()
{
goToStation();
getInLineInStation();
}
}

public class Station {
private Vector<StationEventsViewListener> viewListeners;

private void fireAddPassengerEvent(Passenger passenger)
{
for (StationEventsViewListener l : viewListeners) {
l.addPassengerEvent(passenger);
}
}
public synchronized boolean addPassenger(Passenger p)
{
passengersInQueue.addLast(passenger);
fireAddPassengerEvent(passenger);
}
}

最佳答案

不,你们的观点不应该交流,不应该耦合。只有模特互相交谈和见面。每个模型的 View 都会相应地发生变化。

回到你的问题。 Panel_P 应该链接到包含乘客信息的模型。另一方面,Panel_S 应该链接到包含站点信息的模型。现在,当一位新乘客到达车站时,passenger 模型应将新乘客的到来通知给station 模型。 Panel_S 然后可以从 station 模型更新,而不用关心 passenger 模型及其 View (Panel_P)

关于java - 在 Java 中的 MVC View 之间进行交互的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10959959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com