我的類C1擁有所有靜態成員(變量和方法)。它還有一個可觀察的C2類型對象的數組A1。我希望C1成爲一個觀察者,注意到C2的變化,然後通過使用A1中包含的引用將這些變化應用於對象。 我正在使用C1的一個實例,以便它可以添加爲C2對象的觀察者。Observer observable design pattern - 用靜態成員創建一個類Observer?
觀察者可觀察的設計模式是否適合這種情況?如果是,那麼我是否正確應用?
import java.util.*;
class FlightStatusChangeEvent{
int status;
Flight flight;
FlightStatusChangeEvent(int statusCode, Flight flight){
this.status = statusCode;
this.flight = flight;
}
public int getStatus(){return this.status;}
public Flight getFlight(){return this.flight;}
}
class Flight extends Observable{
int status;// 0 = on time, -1 = late, +1 = before scheduled time
public void updateStatus(int statusCode){
this.status = statusCode;
FlightStatusChangeEvent fsce = new FlightStatusChangeEvent(status, this);
setChanged();
notifyObservers(fsce);
}
}
class FlightStatusMonitor implements Observer{
public static ArrayList<Flight> flights = new ArrayList<Flight>();
//keep calling this method every 10 sec to get latest flight status
public void displayStatusOfFlights(){
//print all flight statuses in array list - flights
}
public void update(Observable flight, Object flightStatusEvent){
FlightStatusChangeEvent fsce = (FlightStatusChangeEvent) flightStatusEvent;
Flight fl = fsce.getFlight();
int status = fsce.getStatus();
//find the flight in array flights and then update its status
}
}
你能分享一些代碼?而且所有靜態成員類都是一個很好的反模式。你能改變它嗎? – DiogoSantana 2013-03-24 02:45:26
@DiogoSantana - 我添加了代碼。 – 2013-03-24 03:08:27
爲什麼FlightStatusMonitor.flights需要是靜態的?沒有這個,你可以做你想做的事。 – DiogoSantana 2013-03-24 03:11:45