Passenger
s 和Taxi
s 在不同的线程中独立运行。在 Edwin Buck 的大力帮助下,我使用 MVC 进行出租车管理。在我的情况下 view( JTaxiPanel
) 和 models( 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)
{
}
}