Viewer mode of Programming mode (Observer)

Source: Internet
Author: User

The observer pattern consists of four roles: abstract subject role, abstract observer role, specific subject role, abstract observer role, and specific observer role .

Abstract Theme Role (Subject): Save references to all observer roles in a collection, and can have any number of observers. It provides an interface to add, remove observers, and to send notifications to registered observers.

specific topic role (Observer): A concrete class that implements the interface provided by the abstract theme role.

Abstract Observer Role (ConcreteSubject): Provides an excuse to receive notifications sent by the subject role.

specific observer role (CONCRETEOBSERVER): A concrete class that implements the interface provided by the abstract observer role.

class Diagram

Java code:

 PackageCom.observer;Importjava.util.ArrayList;Importjava.util.List;/*** Abstract theme characters, being observed *@authorHyp **/ Public Interfacesubject{voidAddwatcher (Watcher Watcher); voidRemovewatcher (Watcher Watcher); voidNotify (String message);}/*** Abstract observer role, viewing subject *@authorHyp **/ Public Interfacewatcher{voidUpdate (String message);/*** Specific Theme characters *@authorHyp **/ Public classConcreteSubjectImplementssubject{Privatelist<watcher> watchers =NewArraylist<watcher>(); @Override Public voidAddwatcher (Watcher Watcher) {Watchers.add (watcher); } @Override Public voidRemovewatcher (Watcher Watcher) {watchers.remove (watcher); } @Override Public voidNotify (String message) { for(Watcher W:watchers) {w.update (message); }    }}/*** Specific Viewer orange *@authorHyp **/ Public classConcretewatcherImplementswatcher{@Override Public voidUpdate (String message) {System.out.println ( This. toString () + ":" +message); }}/*** Test Viewer mode *@authorHyp **/ Public classtest{ Public Static voidMain (string[] args) {Subject Subject=NewConcreteSubject (); Watcher Watcher1=NewConcretewatcher (); Watcher Watcher2=NewConcretewatcher (); Watcher Watcher3=NewConcretewatcher (); Subject.addwatcher (watcher1);//Add ObserverSubject.addwatcher (WATCHER2);                Subject.addwatcher (WATCHER3); Subject.notify ("Hello");//Notify all observersSubject.removewatcher (watcher1);//Removing an observerSubject.notify ("Bye~"); }}

Viewer mode of Programming mode (Observer)

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.