Observer mode (Observer pattern)

Source: Internet
Author: User

Observer pattern: Defines a one-to-many dependency between objects so that when an object changes state, all its dependents are notified and updated automatically.

Here is a specific example:

Two observers, Binaryobserver's update converts setstate incoming integers into binary, octaobserver to octal.

Interface Subject {       private list<observer> observers;      Public void registerobserver (Observer o);      Public void removeobserver (Observer o);       Public void notifyallobservers ();}

 Public classConcreteSubject implements subject{PrivateList<observer>observers=NewArraylist<observer>(); Private intState ;  Public intgetState () {returnState ; }    Public voidSetState (intState ) {       This. State =State ;   Notifyallobservers (); }    Public voidregisterobserver (Observer Observer) {observers.add (Observer); }     Public voidremoveobserver (Observer Observer) {inti =OBSERVERS.INDEXOF (Observer); if(I >= 0) Observers.remove (i); }    Public voidnotifyallobservers () { for(Observer observer:observers) {observer.update (); }   }     }

Abstract Observer {   publicabstractvoid  update ();}
 Public class Implements observer{Subject Subject;     Public binaryobserver (Subject Subject) {      this. Subject = Subject;        this. Subject.attach (this);   }   @Override   publicvoid  update () {      "Binary String:"       +  Integer.tobinarystring (Subject.getstate ()));}    }

 Public class Implements observer{   Subject Subject;     Public octalobserver (Subject Subject) {      this. Subject = Subject;        this. Subject.attach (this);   }   @Override   publicvoid  update () {     "octal String:"      +  Integer.tooctalstring (Subject.getstate ()));}    }

Test code:

New NEW New binaryobserver (subject );
Subject.registerobserver (o);
Subject.registerobserver (b); subject.setstate,subject.setstate (10);

There are addactionlistener methods that use observer patterns, such as JButton, in swing.

Observer mode (Observer pattern)

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.