【发布时间】:2012-06-24 06:31:34
【问题描述】:
Passengers 和Taxis 在不同的线程中独立运行。在 Edwin Buck here 的大力帮助下,我使用 MVC 进行出租车管理。在我的情况下,视图(JTaxiPanel)和模型(Passenger)都听Taxi。当Taxi 触发事件时(例如,当添加乘客或出租车开始驾驶时......)所有侦听器都会收到通知。问题是Passenger即使有其他乘客加入出租车也会收到通知。我想让乘客听,但我不认为应该在添加其他乘客时或在其他一些情况下通知Passenger。
如何处理此类问题?
出租车应该有 2 个听众名单还是有其他方法可以做到?
class Station extends Thread
{
LinkedList<Taxi> taxisInQueue;
LinkedList<Passenger> passengersInQueue;
void matchPassengerToTaxi()
{
Taxi taxi = taxisInQueue.removeFirst();
Passenger passenger = passengersInQueue.removeFirst();
// passenger listen to taxi
taxi.addListener(passenger);
taxi.addPassenger(passenger);
}
}
class Passenger extends Thread implements TaxiListener
{
@Override
public void taxiChanged(TaxiEvent event)
{
}
}
class Taxi extends Thread
{
Vector<Passenger> passengers;
public void addPassenger(Passenger passenger)
{
passengers.add(passenger);
// notify listeneres
fireEvent(new PassengerAddedEvent(this, passenger));
}
}
class JTaxiPanel extends JPanel implements TaxiListener
{
public JTaxi(Taxi model)
{
this.model = model
// view listens to Taxi
model.addTaxiListener(this);
}
@Override
public void taxiChanged(TaxiEvent event)
{
}
}
【问题讨论】:
标签: java model-view-controller architecture