Вы можете изменить сигнатуру метода notify (), который используется субъектом для уведомления наблюдателей. Вы можете иметь все свои типы событий в перечислении, а затем использовать его в качестве параметра notif (тип EventType), а затем в каждом наблюдателе вы можете написать простое выражение if и выполнить фильтрацию.
Предположим, что ObserveTemp и ObserveHumidity являются двумя наблюдателями для предметной комнаты, а затем, если изменится существо, вы можете сделать это.
наблюдатель.notify (Event_Temp) и в случае изменения влажности вы можете сделать уведомление (Event_Humidity). В Observers, когда вы предоставляете реализацию для метода notify, вы можете изменить сигнатуру метода notify (), который используется субъектом для уведомления наблюдателей. Вы можете иметь все свои типы событий в перечислении, а затем использовать его в качестве параметра notif (тип EventType), а затем в каждом наблюдателе вы можете написать простое выражение if и выполнить фильтрацию.
Предположим, что ObserveTemp и ObserveHumidity являются двумя наблюдателями для предметной комнаты, а затем, если изменится существо, вы можете сделать это.
наблюдатель.notify (Event_Temp) и в случае изменения влажности вы можете сделать уведомление (Event_Humidity). В ObserveTemp, когда вы предоставляете реализацию для метода уведомления, вы можете сделать, как показано ниже.
public void notify (Event_Type type) {
if (type == Event_temp){
//do processing...
}
}
надеюсь, что это поможет, в этом случае субъекту не нужно знать о том, какие классы концептуально реализуют Observer.