Вы можете использовать шаблон наблюдателя в режиме извлечения, что означает, что наблюдаемое передаст себя наблюдателю update()
. Таким образом, наблюдатель может получить свойства, которые он хочет, от получателей наблюдаемого.
Я полагаю, temperature
, dayInTime
, season
в вашей теме оба int
Итак, вы Observable
(т.е. субъект) будете выглядеть так:
public class Subject extends Observable{
private int temperature;
private int dayInTime;
private int season;
private void changeEnvironment() {
Random random = new Random();
this.season = SEASON[random.nextInt(3)];
this.dayInTime = DAY_IN_TIME[random.nextInt(2)];
this.temperature = random.nextInt(120);
setChanged();
/** Notify all of the subscribed observers about its changes
It will call each observers' update(this, null)***/
notifyObservers();
}
public int getTemperature(){....}
public int getdayInTime(){.....}
public int getSeason(){....}
}
Тогда ваш наблюдатель может получить температуру, dayInTime, сезон, используя соответствующие методы получения вашего Observable:
public void update(Observable o, Object arg) {
Subject = (Subject) o;
int temperature = o.getTemperature();
int dayInTime= o.getdayInTime();
int season= o.getSeason();
}