/* EventSource.java : اسم الملف */
package org.wikipedia.obs;
import java.util.Observable; //تضمين مكتبة المراقب
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class EventSource extends Observable implements Runnable {
@Override
public void run() {
try {
final InputStreamReader isr = new InputStreamReader(System.in);
final BufferedReader br = new BufferedReader(isr);
while (true) {
String response = br.readLine();
setChanged();
notifyObservers(response);
}
}
catch (IOException e) {
e.printStackTrace();
}
}
}
/* ResponseHandler.java : اسم الملف */
package org.wikipedia.obs;
import java.util.Observable;
import java.util.Observer; /* هذا هو معالج الأحداث */
public class ResponseHandler implements Observer {
private String resp;
public void update(Observable obj, Object arg) {
if (arg instanceof String) {
resp = (String) arg;
System.out.println("\nReceived Response: " + resp );
}
}
}
/* MyApp.java : اسم الملف */
/* البرنامج الرئيسي هنا */
package org.wikipedia.obs;
public class MyApp {
public static void main(String[] args) {
System.out.println("Enter Text >");
// مصدر الأحداث - قراءة الدخل من مجرى الدخل الرئيسي
final EventSource eventSource = new EventSource();
// أنشئ مراقب
final ResponseHandler responseHandler = new ResponseHandler();
// سجل المراقب في قائمة مراقبي الأحداث
eventSource.addObserver(responseHandler);
// شغل خيط مصدر الأحداث
Thread thread = new Thread(eventSource);
thread.start();
}
}
class Observable(object):
def __init__(self):
self.__observers = []
def registerObserver(self, observer):
self.__observers.append(observer)
def notifyObservers(self, *args, **kwargs):
for observer in self.__observers:
observer.notify(self, *args, **kwargs)
class Observer(object):
def __init__(self, observable):
observable.registerObserver(self)
def notify(self, observable, *args, **kwargs):
print 'Got', args, kwargs, 'From', observable
subject = Observable()
observer = Observer(subject)
subject.notifyObservers('test')