jgs 564 00001001 Main public class Main { public static void main(String[]a) { // Configure pattern ConcreteSubject s = new ConcreteSubject(); ConcreteObserver eyeOne = new ConcreteObserver(); ConcreteObserver eyeTwo = new ConcreteObserver(); s.addObserver(eyeOne); s.addObserver(eyeTwo); // Change subject s.setData("ABC"); s.setData("XYZ"); } }
jgs 564 00001001 Main public class Main { public static void main(String[]a) { // Configure pattern ConcreteSubject s = new ConcreteSubject(); ConcreteObserver eyeOne = new ConcreteObserver(); ConcreteObserver eyeTwo = new ConcreteObserver(); s.addObserver(eyeOne); s.addObserver(eyeTwo); // Change subject s.setData("ABC"); s.setData("XYZ"); } }
jgs 564 00001001 Note § Java 9 came out, and deprecated Observer implementation in java.util package. Deprecated their own implementation of the concept, not the concept itself. 🤔 § Problems: serialization and thread safety problems § Optional solution PropertyChangeListener from java.beans package.
jgs 564 00001001 Student import java.util.Observable; import java.util.Observer; public class Student implements Observer { public String answerQuestion (String question) { return "I am thinking about \'" + question +"\'"; } @Override public void update(Observable o, Object arg) { String x = ((Tutor)o).getQuestion(); String y = this.answerQuestion(x); System.out.println(y); } }
jgs CSE 564 Software Design Javier Gonzalez-Sanchez, Ph.D. [email protected] Fall 2021 Copyright. These slides can only be used as study material for the class CSE564 at ASU. They cannot be distributed or used for another purpose.