Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSC 313 – Advanced Programming Topics. Observer Pattern in Java  Java ♥ Observer Pattern & uses everywhere  Find pattern in JButton & ActionListener.

Similar presentations


Presentation on theme: "CSC 313 – Advanced Programming Topics. Observer Pattern in Java  Java ♥ Observer Pattern & uses everywhere  Find pattern in JButton & ActionListener."— Presentation transcript:

1 CSC 313 – Advanced Programming Topics

2 Observer Pattern in Java  Java ♥ Observer Pattern & uses everywhere  Find pattern in JButton & ActionListener s  Tracking mouse in Swing using Observer Pattern  Much of the multi-threaded API uses this  Event-based code needs Observers to work  Not limited to Java; true for most OO languages

3 java.util.Observable  Among original classes included in Java  Works with java.util.Observer interface  Observable manages Observers in code void addObserver(Observer o) void deleteObserver(Observer o) void deleteObservers() int countObservers()

4 Handling Updates  Observable will support push model… void notifyObserver(Object arg) … and pull model can also be used void notifyObserver() boolean hasChanged() void clearChanged() void setChanged()  Notifications sent to Observer ’s only method void update(Observable o, Object arg)

5 Using Observable Problem public class CSCClass { private Observable obs; // Lots of unimportant code here public void cancelClass() { obs.notifyObservers(“Go ski”); } }

6 Using Observable Problem public class CSCClass { private Observable obs; // Lots of unimportant code here public void cancelClass() { obs.notifyObservers(“Go ski”); } }

7 Using Observable Problem public class CSCClass { private Observable obs; // Lots of unimportant code here public void cancelClass() { obs.notifyObservers(“Go ski”); } }

8 Bad & Worse Design Decisions  No update was sent

9 Bad & Worse Design Decisions  No update was sent

10 Bad & Worse Design Decisions  No update was sent; everyone went to class

11 Bad & Worse Design Decisions

12 Updated Code

13 Next Attempt public class CSCClass { private Observable obs; // Lots of unimportant code here public void cancelClass() { obs.setChanged(); obs.notifyObservers(“Go ski”); } }

14 Next Attempt

15

16 setChanged has protected access

17 %&#*@ Awful Design

18 setChanged & clearChanged protected access java.util package is sealed; cannot write class for it Can only be called & used from within subclass Must write subclass of Observable to use it As this is Java, that class cannot extend others Updates received in method of Observer : void update(Observable o, Object arg) This really means that can only push 1 object Kills point of push model since cannot push much

19 %&#*@ Awful Design setChanged & clearChanged protected access java.util package is sealed; cannot write class for it Can only be called & used from within subclass Must write subclass of Observable to use it As this is Java, that class cannot extend others Updates received in method of Observer : void update(Observable o, Object arg) This really means that can only push 1 object Kills point of push model since cannot push much Useless

20 Final Attempt public class CSCClass extends Observable { public void cancelClass() { setChanged(); notifyObservers(“Go ski”); } } public class Student implements Observer { public void update(Observable o, Object arg) { String s = (String)arg; if (s.equals(“Get here NOW!!!”)) // Go skiing else // Go to class; think about skiing } }

21 Final Attempt

22

23

24

25 Observable Pros & Cons  Cons:  Pros:

26 Observable Pros & Cons  Cons:  Need a subclass of Observable to use  Must call setChange before notifyObservers  Can push only 1 object to Observers  Pros:  Already has code to add & remove Observers  Easy to rewrite and improve upon this design

27 For Next Lecture  Two (short) readings available on web  Will start looking into how code is optimized  How does Java run & make programs faster?  What can we do to make our code faster?  Using final can be huge. Why would it matter?  Lab #2 due in 1 week & available on Angel  Make sure that you also check the grading rubric  Help available in WTC206 during the lab time


Download ppt "CSC 313 – Advanced Programming Topics. Observer Pattern in Java  Java ♥ Observer Pattern & uses everywhere  Find pattern in JButton & ActionListener."

Similar presentations


Ads by Google