Design Pattern Basic Tutorial

adplus-dvertising
Observer Pattern
Previous Home Next

The Observer pattern is used in GUI Application. in this if any object change the state of itself then the other dependents object automatically update itself according to the object.

Benefit and Use of Observer Pattern
  1. The dependent object can change the state automatically.
  2. The One object change affects on one or many objects.
  3. It is maintain consistent between objects.
  4. It is Need broadcast communication.

Example

As we know that Observer pattern is even used in GUI application. For example, We can define an one-to-many relational dependency between objects by this when an object changes our state, then all dependent object are automatically update. The Java API is provide a built-in interface Observer and class Observable for dependency between the objects.

package r4r;
import java.util.Observable; 
//Observable class is here
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class obj2 extends Observable implements Runnable {
public void run() {
try {
final InputStreamReader ISR = new InputStreamReader( System.in );
final BufferedReader bu = new BufferedReader( ISR );
while( true ) {
String response = bu.readLine();
setChanged();
notifyObservers( response );
}
}
catch (IOException e) {
e.printStackTrace();
}
}

}

package r4r;
import java.util.Observable;
import java.util.Observer;
// this is Event Handler class 
 
public class obj1 implements Observer {
private String res;
public void update (Observable obj, Object arg) {
if (arg instanceof String) {
res = (String) arg;
System.out.println("\nReceiving the Response: "+ res );
}
}
	
}

//Create the Main class

package r4r;
import java.util.Observable;
import java.util.*; 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class observertest {
public static void main(String args[]) {
System.out.println("Enter The Text here>");
 
// create an event source - reads from stdin
final obj1 ob1 = new obj1();
 
// create an observer
final obj2 ob2 = new obj2();
 
// subscribe the observer to the event source
ob1.addObserver(ob2);
  
// starts the event thread
Thread thread = new Thread(ob2);
thread.start();
    }
}
Previous Home Next