Cmsc 132: Object-Oriented Programming Ii

Cmsc 132: Object-Oriented Programming Ii

© Department of Computer Science UMD CMSC 132: OBJECT-ORIENTED PROGRAMMING II Iterator, Marker, Observer Design Patterns Department of Computer Science University of Maryland, College Park © Department of Computer Science UMD Design Patterns • Descriptions of reusable solutions to common software design problems (e.g, Iterator pattern) • Captures the experience of experts • Goals • Solve common programming challenges • Improve reliability of solution • Aid rapid software development • Useful for real-world applications • Design patterns are like recipes – generic solutions to expected situations • Design patterns are language independent • Recognizing when and where to use design patterns requires familiarity & experience • Design pattern libraries serve as a glossary of idioms for understanding common, but complex solutions • Design patterns are used throughout the Java Class Libraries © Department of Computer Science UMD Iterator Pattern • Definition • Move through collection of objects without knowing its internal representation • Where to use & benefits • Use a standard interface to represent data objects • Uses standard iterator built in each standard collection, like List • Need to distinguish variations in the traversal of an aggregate • Example • Iterator for collection • Original • Examine elements of collection directly • Using pattern • Collection provides Iterator class for examining elements in collection © Department of Computer Science UMD Iterator Example public interface Iterator<V> { bool hasNext(); V next(); void remove(); } Iterator<V> it = myCollection.iterator(); while ( it.hasNext() ) { V x = it.next(); // finds all objects … // in collection } © Department of Computer Science UMD Marker Interface Pattern • Definition • Label semantic attributes of a class • Where to use & benefits • Need to indicate attribute(s) of a class • Allows identification of attributes of objects without assuming they are instances of any particular class • Example • Classes with desirable property GoodProperty • Original • Store flag for GoodProperty in each class • Using pattern • Label class using GoodProperty interface • Examples from Java • Cloneable • Serializable © Department of Computer Science UMD Marker Interface Example public interface SafePet { } // no methods class Dog implements SafePet { … } class Piranha { … } Dog dog = new Dog(); Piranha piranha = new Piranha(); if (dog instanceof SafePet) … // True if (piranha instanceof SafePet) … // False © Department of Computer Science UMD Observer Pattern • Definition • Updates all dependents of object automatically once object changes state • Where to use & benefits • One change affects one or many objects • Many objects behavior depends on one object state • Need broadcast communication • Maintain consistency between objects • Observers do not need to constantly check for changes © Department of Computer Science UMD Observer Pattern • Example Window • Multiple windows (views) for single document • Original Window • Each window checks document • Window updates image if document changes Window • Think of window as asking “Are we there yet?” • Using pattern Window • Each window registers as observer for document • Document notifies all of its observers when it changes Doc Doc © Department of Computer Science UMD Observer Example public interface Observer { public class MyWindow implements Observer { // Called when observed object o changes public openDoc(Observable doc) { public void update(Observable o, Object a) doc.addObservers(this); // Adds window to list } } public void update(Observable doc, Object arg) { redraw(doc); // Displays updated document public class Observable { } protected void setChanged() } protected void clearChanged() boolean hasChanged() public class MyDoc extends Observable { public void edit() { void addObserver(Observer o) … // Edit document void notifyObservers() setChanged(); // Mark change void notifyObservers(Object a) notifyObservers(arg); // Invokes update() } } }.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    9 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us