SlideShare une entreprise Scribd logo
1  sur  18
Research week #2
   Introduction
   Intent
   Class diagram
   Sequence diagram
   Benefit
   Implementations Issues
   Observer pattern in java
   Observer design pattern is behavioral pattern
   Used to assure consistency between objects.
   Separation of the objects that is dependent
    on each other.
   It used to make relation between objects at
    run time not compile time.
   Used in MVC(mainly Model & GUI part)
   Define a one-to-many dependency between
    objects so that when one object changes
    state, all its dependents are notified and
    updated automatically.
   Object that changes called “Subject”.

   Object that receives updates called “Object”.
   Sequence diagram

      observer                  Subject
                 Register/att
                     ach

                                Change state
                                   trigger
                  notify()/upda
                                 notification
                        te
                   getstate()
   Minimal coupling between the Subject and
    the Observer:
    Can reuse subjects without reusing their observers
     and vice versa.
    Observers can be added without modifying the
     subject.
    All subject knows is its list of observers so make
     decoupling.
    Subject does not need to know the concrete class of
     an observer.
   How does the subject keep track of its observers?
        Array, linked list, Vector

   What if an observer wants to observe more than
    one subject?
       subject tell the observer who it is via the update
    interface.

   Who triggers the update?
       The subject whenever its state changes.

   Can an observer also be a subject?
      Yes! Because class can implement more than
    one interface.
   How does Subject send the changed data to
    Object?

      Two ways:

       1-Pull model: Observer invoke method
    requesting data
         SubjectName.getdata();

       2-Push model: Subject passes data to
    observer as argument at update ()
        Object[i].update(SubjectName,data);
   We could implement the Observer pattern
    from scratch in Java.
   But Java provides the Observable/Observer
    classes as built-in support for the Observer
    pattern.
   The java.util.Observable class is the base
    Subject class. Any class that wants to be
    observed extends this class.
     Provides methods to add/delete observers
     Provides methods to notify all observers
     Uses a Vector for storing the observer references
   The java.util.Observer interface is the
    Observer interface. It must be implemented
    by any observer class.

   Java.util.Observable class
    public synchronized void addObserver(Observer o)
    public synchronized void deleteObserver(Observer
     o)
    protected synchronized void setChanged()
    public void notifyObservers()
    public void notifyObservers(Object arg)
   Java.util.Observer interface
    • public abstract void update(Observable o, Object
      arg)

   Let’s see sample code:
import java.util.Observable;
import java.util.Observer;
public class ConcreteSubject extends Observable {
  private String name;
  private float price;
  public ConcreteSubject(String name, float price) {
   this.name = name;
    this.price = price;
    System.out.println("ConcreteSubject created: " + name + " at "
       + price);
     }
  public String getName() {return name;}
  public float getPrice() {return price;}
  public void setPrice(float price) {
   this.price = price;
   setChanged();
     notifyObservers(new Float(price));
    }
}
import java .util.Observer;
import java .util.Observable;

public class ConcreteObserver implements Observer {
  private float price;
  public void NameObserver() {
    price =0;
   System.out.println("price observer is created is"+price);
}

    public void update(Observable obj, Object a) {

        price = ((Float)a).floatValue();
        System.out.println("PriceObserver: Price changed to " +
    price);
    }

}
public class TestObserver {

    /**
      * @param args
      */
    public static void main(String[] args) {
     ConcreteSubject s = new ConcreteSubject("GUI
    team",1.29f);
     ConcreteObserver o = new ConcreteObserver();
     s.addObserver(o);
     s.setPrice(4.56f);
     s.setPrice(2.3f);
    }

}
   Program output

ConcreteSubject created: GUI team at 1.29
PriceObserver: Price changed to 4.56
PriceObserver: Price changed to 2.3
   http://www.cs.clemson.edu/~malloy/courses
    /patterns/observer.html
   http://www.wohnklo.de/patterns/observer.ht
    ml
   http://msdn.microsoft.com/en-
    us/library/ee817669.aspx
   http://userpages.umbc.edu/~tarr/dp/lecture
    s/Observer.pdf

Contenu connexe

Tendances

Introduction to design patterns
Introduction to design patternsIntroduction to design patterns
Introduction to design patternsAmit Kabra
 
Angular 8
Angular 8 Angular 8
Angular 8 Sunil OS
 
Observer and Decorator Pattern
Observer and Decorator PatternObserver and Decorator Pattern
Observer and Decorator PatternJonathan Simon
 
Design patterns ppt
Design patterns pptDesign patterns ppt
Design patterns pptAman Jain
 
Java Design Patterns Tutorial | Edureka
Java Design Patterns Tutorial | EdurekaJava Design Patterns Tutorial | Edureka
Java Design Patterns Tutorial | EdurekaEdureka!
 
Chain of responsibility
Chain of responsibilityChain of responsibility
Chain of responsibilityShakil Ahmed
 
The Singleton Pattern Presentation
The Singleton Pattern PresentationThe Singleton Pattern Presentation
The Singleton Pattern PresentationJAINIK PATEL
 
Design Pattern - Factory Method Pattern
Design Pattern - Factory Method PatternDesign Pattern - Factory Method Pattern
Design Pattern - Factory Method PatternMudasir Qazi
 
Introduction to React
Introduction to ReactIntroduction to React
Introduction to ReactRob Quick
 
Design Patterns
Design PatternsDesign Patterns
Design Patternssoms_1
 
Bridge Design Pattern
Bridge Design PatternBridge Design Pattern
Bridge Design Patternsahilrk911
 
Understanding react hooks
Understanding react hooksUnderstanding react hooks
Understanding react hooksSamundra khatri
 
Advanced Javascript
Advanced JavascriptAdvanced Javascript
Advanced JavascriptAdieu
 
Introducing type script
Introducing type scriptIntroducing type script
Introducing type scriptRemo Jansen
 

Tendances (20)

Introduction to design patterns
Introduction to design patternsIntroduction to design patterns
Introduction to design patterns
 
Angular 8
Angular 8 Angular 8
Angular 8
 
Observer and Decorator Pattern
Observer and Decorator PatternObserver and Decorator Pattern
Observer and Decorator Pattern
 
Design patterns ppt
Design patterns pptDesign patterns ppt
Design patterns ppt
 
Adapter pattern
Adapter patternAdapter pattern
Adapter pattern
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Java Design Patterns Tutorial | Edureka
Java Design Patterns Tutorial | EdurekaJava Design Patterns Tutorial | Edureka
Java Design Patterns Tutorial | Edureka
 
Proxy Design Pattern
Proxy Design PatternProxy Design Pattern
Proxy Design Pattern
 
Dependency Injection
Dependency InjectionDependency Injection
Dependency Injection
 
Adapter Pattern
Adapter PatternAdapter Pattern
Adapter Pattern
 
Chain of responsibility
Chain of responsibilityChain of responsibility
Chain of responsibility
 
The Singleton Pattern Presentation
The Singleton Pattern PresentationThe Singleton Pattern Presentation
The Singleton Pattern Presentation
 
Design Pattern - Factory Method Pattern
Design Pattern - Factory Method PatternDesign Pattern - Factory Method Pattern
Design Pattern - Factory Method Pattern
 
Introduction to React
Introduction to ReactIntroduction to React
Introduction to React
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Bridge Design Pattern
Bridge Design PatternBridge Design Pattern
Bridge Design Pattern
 
Understanding react hooks
Understanding react hooksUnderstanding react hooks
Understanding react hooks
 
Advanced Javascript
Advanced JavascriptAdvanced Javascript
Advanced Javascript
 
Introducing type script
Introducing type scriptIntroducing type script
Introducing type script
 
Javascript
JavascriptJavascript
Javascript
 

En vedette

Observer design pattern
Observer design patternObserver design pattern
Observer design patternSameer Rathoud
 
Design patterns 4 - observer pattern
Design patterns   4 - observer patternDesign patterns   4 - observer pattern
Design patterns 4 - observer patternpixelblend
 
Observer Pattern Khali Young 2006 Aug
Observer Pattern Khali Young 2006 AugObserver Pattern Khali Young 2006 Aug
Observer Pattern Khali Young 2006 Augmelbournepatterns
 
Design patterns: observer pattern
Design patterns: observer patternDesign patterns: observer pattern
Design patterns: observer patternJyaasa Technologies
 
Design pattern - Software Engineering
Design pattern - Software EngineeringDesign pattern - Software Engineering
Design pattern - Software EngineeringNadimozzaman Pappo
 
Konstantin slisenko - Design patterns
Konstantin slisenko - Design patternsKonstantin slisenko - Design patterns
Konstantin slisenko - Design patternsbeloslab
 
The Decorator Pattern
The Decorator PatternThe Decorator Pattern
The Decorator PatternAkshat Vig
 
Observer Pattern
Observer PatternObserver Pattern
Observer PatternGuo Albert
 
Strategy Pattern
Strategy PatternStrategy Pattern
Strategy PatternGuo Albert
 
The Observer Pattern (Definition using UML)
The Observer Pattern (Definition using UML)The Observer Pattern (Definition using UML)
The Observer Pattern (Definition using UML)John Ortiz
 
Design Pattern - 2. Observer
Design Pattern -  2. ObserverDesign Pattern -  2. Observer
Design Pattern - 2. ObserverFrancesco Ierna
 

En vedette (19)

Observer design pattern
Observer design patternObserver design pattern
Observer design pattern
 
Design patterns - Observer Pattern
Design patterns - Observer PatternDesign patterns - Observer Pattern
Design patterns - Observer Pattern
 
Observer design pattern
Observer design patternObserver design pattern
Observer design pattern
 
Design patterns 4 - observer pattern
Design patterns   4 - observer patternDesign patterns   4 - observer pattern
Design patterns 4 - observer pattern
 
Observer pattern
Observer patternObserver pattern
Observer pattern
 
Observer Pattern Khali Young 2006 Aug
Observer Pattern Khali Young 2006 AugObserver Pattern Khali Young 2006 Aug
Observer Pattern Khali Young 2006 Aug
 
Design patterns: observer pattern
Design patterns: observer patternDesign patterns: observer pattern
Design patterns: observer pattern
 
Design pattern - Software Engineering
Design pattern - Software EngineeringDesign pattern - Software Engineering
Design pattern - Software Engineering
 
Memento pattern
Memento patternMemento pattern
Memento pattern
 
Mediator Design Pattern
Mediator Design PatternMediator Design Pattern
Mediator Design Pattern
 
Konstantin slisenko - Design patterns
Konstantin slisenko - Design patternsKonstantin slisenko - Design patterns
Konstantin slisenko - Design patterns
 
Design pattern-presentation
Design pattern-presentationDesign pattern-presentation
Design pattern-presentation
 
L05 Design Patterns
L05 Design PatternsL05 Design Patterns
L05 Design Patterns
 
The Decorator Pattern
The Decorator PatternThe Decorator Pattern
The Decorator Pattern
 
Observer Pattern
Observer PatternObserver Pattern
Observer Pattern
 
Js design patterns
Js design patternsJs design patterns
Js design patterns
 
Strategy Pattern
Strategy PatternStrategy Pattern
Strategy Pattern
 
The Observer Pattern (Definition using UML)
The Observer Pattern (Definition using UML)The Observer Pattern (Definition using UML)
The Observer Pattern (Definition using UML)
 
Design Pattern - 2. Observer
Design Pattern -  2. ObserverDesign Pattern -  2. Observer
Design Pattern - 2. Observer
 

Similaire à Observer design pattern

Design patterns
Design patternsDesign patterns
Design patternsISsoft
 
Observer pattern
Observer patternObserver pattern
Observer patternanshu_atri
 
Observer dp
Observer dpObserver dp
Observer dpISsoft
 
Reactive programming with RxAndroid
Reactive programming with RxAndroidReactive programming with RxAndroid
Reactive programming with RxAndroidSavvycom Savvycom
 
RxJava 2 Reactive extensions for the JVM
RxJava 2  Reactive extensions for the JVMRxJava 2  Reactive extensions for the JVM
RxJava 2 Reactive extensions for the JVMNetesh Kumar
 
Advanced JavaScript
Advanced JavaScriptAdvanced JavaScript
Advanced JavaScriptFu Cheng
 
Java design patterns
Java design patternsJava design patterns
Java design patternsShawn Brito
 
Knockoutjs Part 2 Beginners
Knockoutjs Part 2 BeginnersKnockoutjs Part 2 Beginners
Knockoutjs Part 2 BeginnersBhaumik Patel
 
Scope.js prsentation
Scope.js prsentationScope.js prsentation
Scope.js prsentationAtishay Baid
 
Distributing information on iOS
Distributing information on iOSDistributing information on iOS
Distributing information on iOSMake School
 
C# Advanced L07-Design Patterns
C# Advanced L07-Design PatternsC# Advanced L07-Design Patterns
C# Advanced L07-Design PatternsMohammad Shaker
 
How To Utilize Context API With Class And Functional Componen in React.pptx
How To Utilize Context API With Class And Functional Componen in React.pptxHow To Utilize Context API With Class And Functional Componen in React.pptx
How To Utilize Context API With Class And Functional Componen in React.pptxBOSC Tech Labs
 
Reactive java - Reactive Programming + RxJava
Reactive java - Reactive Programming + RxJavaReactive java - Reactive Programming + RxJava
Reactive java - Reactive Programming + RxJavaNexThoughts Technologies
 

Similaire à Observer design pattern (20)

Observer pattern
Observer patternObserver pattern
Observer pattern
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Observer pattern
Observer patternObserver pattern
Observer pattern
 
33071-AOOP-Exp6 (2).pdf
33071-AOOP-Exp6 (2).pdf33071-AOOP-Exp6 (2).pdf
33071-AOOP-Exp6 (2).pdf
 
Observer dp
Observer dpObserver dp
Observer dp
 
Rxandroid
RxandroidRxandroid
Rxandroid
 
RxAndroid
RxAndroidRxAndroid
RxAndroid
 
Reactive programming with RxAndroid
Reactive programming with RxAndroidReactive programming with RxAndroid
Reactive programming with RxAndroid
 
RxJava 2 Reactive extensions for the JVM
RxJava 2  Reactive extensions for the JVMRxJava 2  Reactive extensions for the JVM
RxJava 2 Reactive extensions for the JVM
 
Advanced JavaScript
Advanced JavaScriptAdvanced JavaScript
Advanced JavaScript
 
RxJava@Android
RxJava@AndroidRxJava@Android
RxJava@Android
 
Java design patterns
Java design patternsJava design patterns
Java design patterns
 
Knockoutjs Part 2 Beginners
Knockoutjs Part 2 BeginnersKnockoutjs Part 2 Beginners
Knockoutjs Part 2 Beginners
 
Scope.js prsentation
Scope.js prsentationScope.js prsentation
Scope.js prsentation
 
EMF Tips n Tricks
EMF Tips n TricksEMF Tips n Tricks
EMF Tips n Tricks
 
Distributing information on iOS
Distributing information on iOSDistributing information on iOS
Distributing information on iOS
 
Sdp
SdpSdp
Sdp
 
C# Advanced L07-Design Patterns
C# Advanced L07-Design PatternsC# Advanced L07-Design Patterns
C# Advanced L07-Design Patterns
 
How To Utilize Context API With Class And Functional Componen in React.pptx
How To Utilize Context API With Class And Functional Componen in React.pptxHow To Utilize Context API With Class And Functional Componen in React.pptx
How To Utilize Context API With Class And Functional Componen in React.pptx
 
Reactive java - Reactive Programming + RxJava
Reactive java - Reactive Programming + RxJavaReactive java - Reactive Programming + RxJava
Reactive java - Reactive Programming + RxJava
 

Dernier

ROLES IN A STAGE PRODUCTION in arts.pptx
ROLES IN A STAGE PRODUCTION in arts.pptxROLES IN A STAGE PRODUCTION in arts.pptx
ROLES IN A STAGE PRODUCTION in arts.pptxVanesaIglesias10
 
MS4 level being good citizen -imperative- (1) (1).pdf
MS4 level   being good citizen -imperative- (1) (1).pdfMS4 level   being good citizen -imperative- (1) (1).pdf
MS4 level being good citizen -imperative- (1) (1).pdfMr Bounab Samir
 
Mental Health Awareness - a toolkit for supporting young minds
Mental Health Awareness - a toolkit for supporting young mindsMental Health Awareness - a toolkit for supporting young minds
Mental Health Awareness - a toolkit for supporting young mindsPooky Knightsmith
 
Scientific Writing :Research Discourse
Scientific  Writing :Research  DiscourseScientific  Writing :Research  Discourse
Scientific Writing :Research DiscourseAnita GoswamiGiri
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)lakshayb543
 
Using Grammatical Signals Suitable to Patterns of Idea Development
Using Grammatical Signals Suitable to Patterns of Idea DevelopmentUsing Grammatical Signals Suitable to Patterns of Idea Development
Using Grammatical Signals Suitable to Patterns of Idea Developmentchesterberbo7
 
ESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnv
ESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnvESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnv
ESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnvRicaMaeCastro1
 
Expanded definition: technical and operational
Expanded definition: technical and operationalExpanded definition: technical and operational
Expanded definition: technical and operationalssuser3e220a
 
Daily Lesson Plan in Mathematics Quarter 4
Daily Lesson Plan in Mathematics Quarter 4Daily Lesson Plan in Mathematics Quarter 4
Daily Lesson Plan in Mathematics Quarter 4JOYLYNSAMANIEGO
 
Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management SystemChristalin Nelson
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxHumphrey A Beña
 
Measures of Position DECILES for ungrouped data
Measures of Position DECILES for ungrouped dataMeasures of Position DECILES for ungrouped data
Measures of Position DECILES for ungrouped dataBabyAnnMotar
 
4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptxmary850239
 
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfJemuel Francisco
 
Team Lead Succeed – Helping you and your team achieve high-performance teamwo...
Team Lead Succeed – Helping you and your team achieve high-performance teamwo...Team Lead Succeed – Helping you and your team achieve high-performance teamwo...
Team Lead Succeed – Helping you and your team achieve high-performance teamwo...Association for Project Management
 
Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...
Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...
Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...DhatriParmar
 
4.11.24 Mass Incarceration and the New Jim Crow.pptx
4.11.24 Mass Incarceration and the New Jim Crow.pptx4.11.24 Mass Incarceration and the New Jim Crow.pptx
4.11.24 Mass Incarceration and the New Jim Crow.pptxmary850239
 

Dernier (20)

ROLES IN A STAGE PRODUCTION in arts.pptx
ROLES IN A STAGE PRODUCTION in arts.pptxROLES IN A STAGE PRODUCTION in arts.pptx
ROLES IN A STAGE PRODUCTION in arts.pptx
 
MS4 level being good citizen -imperative- (1) (1).pdf
MS4 level   being good citizen -imperative- (1) (1).pdfMS4 level   being good citizen -imperative- (1) (1).pdf
MS4 level being good citizen -imperative- (1) (1).pdf
 
Mental Health Awareness - a toolkit for supporting young minds
Mental Health Awareness - a toolkit for supporting young mindsMental Health Awareness - a toolkit for supporting young minds
Mental Health Awareness - a toolkit for supporting young minds
 
Scientific Writing :Research Discourse
Scientific  Writing :Research  DiscourseScientific  Writing :Research  Discourse
Scientific Writing :Research Discourse
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
 
Using Grammatical Signals Suitable to Patterns of Idea Development
Using Grammatical Signals Suitable to Patterns of Idea DevelopmentUsing Grammatical Signals Suitable to Patterns of Idea Development
Using Grammatical Signals Suitable to Patterns of Idea Development
 
ESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnv
ESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnvESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnv
ESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnv
 
Expanded definition: technical and operational
Expanded definition: technical and operationalExpanded definition: technical and operational
Expanded definition: technical and operational
 
Daily Lesson Plan in Mathematics Quarter 4
Daily Lesson Plan in Mathematics Quarter 4Daily Lesson Plan in Mathematics Quarter 4
Daily Lesson Plan in Mathematics Quarter 4
 
Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management System
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
 
Measures of Position DECILES for ungrouped data
Measures of Position DECILES for ungrouped dataMeasures of Position DECILES for ungrouped data
Measures of Position DECILES for ungrouped data
 
prashanth updated resume 2024 for Teaching Profession
prashanth updated resume 2024 for Teaching Professionprashanth updated resume 2024 for Teaching Profession
prashanth updated resume 2024 for Teaching Profession
 
INCLUSIVE EDUCATION PRACTICES FOR TEACHERS AND TRAINERS.pptx
INCLUSIVE EDUCATION PRACTICES FOR TEACHERS AND TRAINERS.pptxINCLUSIVE EDUCATION PRACTICES FOR TEACHERS AND TRAINERS.pptx
INCLUSIVE EDUCATION PRACTICES FOR TEACHERS AND TRAINERS.pptx
 
Paradigm shift in nursing research by RS MEHTA
Paradigm shift in nursing research by RS MEHTAParadigm shift in nursing research by RS MEHTA
Paradigm shift in nursing research by RS MEHTA
 
4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx
 
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
 
Team Lead Succeed – Helping you and your team achieve high-performance teamwo...
Team Lead Succeed – Helping you and your team achieve high-performance teamwo...Team Lead Succeed – Helping you and your team achieve high-performance teamwo...
Team Lead Succeed – Helping you and your team achieve high-performance teamwo...
 
Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...
Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...
Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...
 
4.11.24 Mass Incarceration and the New Jim Crow.pptx
4.11.24 Mass Incarceration and the New Jim Crow.pptx4.11.24 Mass Incarceration and the New Jim Crow.pptx
4.11.24 Mass Incarceration and the New Jim Crow.pptx
 

Observer design pattern

  • 2. Introduction  Intent  Class diagram  Sequence diagram  Benefit  Implementations Issues  Observer pattern in java
  • 3. Observer design pattern is behavioral pattern  Used to assure consistency between objects.  Separation of the objects that is dependent on each other.  It used to make relation between objects at run time not compile time.  Used in MVC(mainly Model & GUI part)
  • 4. Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.  Object that changes called “Subject”.  Object that receives updates called “Object”.
  • 5.
  • 6.
  • 7. Sequence diagram observer Subject Register/att ach Change state trigger notify()/upda notification te getstate()
  • 8. Minimal coupling between the Subject and the Observer: Can reuse subjects without reusing their observers and vice versa. Observers can be added without modifying the subject. All subject knows is its list of observers so make decoupling. Subject does not need to know the concrete class of an observer.
  • 9. How does the subject keep track of its observers? Array, linked list, Vector  What if an observer wants to observe more than one subject? subject tell the observer who it is via the update interface.  Who triggers the update? The subject whenever its state changes.  Can an observer also be a subject? Yes! Because class can implement more than one interface.
  • 10. How does Subject send the changed data to Object? Two ways: 1-Pull model: Observer invoke method requesting data SubjectName.getdata(); 2-Push model: Subject passes data to observer as argument at update () Object[i].update(SubjectName,data);
  • 11. We could implement the Observer pattern from scratch in Java.  But Java provides the Observable/Observer classes as built-in support for the Observer pattern.  The java.util.Observable class is the base Subject class. Any class that wants to be observed extends this class. Provides methods to add/delete observers Provides methods to notify all observers Uses a Vector for storing the observer references
  • 12. The java.util.Observer interface is the Observer interface. It must be implemented by any observer class.  Java.util.Observable class public synchronized void addObserver(Observer o) public synchronized void deleteObserver(Observer o) protected synchronized void setChanged() public void notifyObservers() public void notifyObservers(Object arg)
  • 13. Java.util.Observer interface • public abstract void update(Observable o, Object arg)  Let’s see sample code:
  • 14. import java.util.Observable; import java.util.Observer; public class ConcreteSubject extends Observable { private String name; private float price; public ConcreteSubject(String name, float price) { this.name = name; this.price = price; System.out.println("ConcreteSubject created: " + name + " at " + price); } public String getName() {return name;} public float getPrice() {return price;} public void setPrice(float price) { this.price = price; setChanged(); notifyObservers(new Float(price)); } }
  • 15. import java .util.Observer; import java .util.Observable; public class ConcreteObserver implements Observer { private float price; public void NameObserver() { price =0; System.out.println("price observer is created is"+price); } public void update(Observable obj, Object a) { price = ((Float)a).floatValue(); System.out.println("PriceObserver: Price changed to " + price); } }
  • 16. public class TestObserver { /** * @param args */ public static void main(String[] args) { ConcreteSubject s = new ConcreteSubject("GUI team",1.29f); ConcreteObserver o = new ConcreteObserver(); s.addObserver(o); s.setPrice(4.56f); s.setPrice(2.3f); } }
  • 17. Program output ConcreteSubject created: GUI team at 1.29 PriceObserver: Price changed to 4.56 PriceObserver: Price changed to 2.3
  • 18. http://www.cs.clemson.edu/~malloy/courses /patterns/observer.html  http://www.wohnklo.de/patterns/observer.ht ml  http://msdn.microsoft.com/en- us/library/ee817669.aspx  http://userpages.umbc.edu/~tarr/dp/lecture s/Observer.pdf