Package lyj.main;
public class App {
public static void Main (string[] args) {
Subject subject=new Subject ();
Broadcast receivers, observers, subscribers
A a=new a (subject);
b b=new B (subject);
Subject.setstate (9);
Subject.setstate (999);
}
}
Package lyj.main;
Import java.util.ArrayList;
/**
* Theme
* @author Administrator
*
*/
public class Subject {
State
private int state;
public void SetState (int.) {
This.state=state;
Notifiyobserver ();
}
public int getState () {return state;}
All the observers
Private arraylist<observer> observers=new arraylist<> ();
/**
* Subscribe
*/
public void Attach (Observer Observer) {
OBSERVERS.ADD (Observer);
}
/**
* Logout
*/
public void Deattach (Observer Observer) {
OBSERVERS.REMOVE (Observer);
}
/**
* Notify all observers
*/
public void Notifiyobserver () {
for (Observer observer:observers) {
Observer.updata ();
}
}
}
Package lyj.main;
/**
* Observer, when the theme changes, get the latest state of the View (view)
* @author Administrator
*
*/
Public abstract class Observer {
The subject of observation
Subject Subject;
/**
* Parent-Class Subscription topic
* @param subject
*/
Public Observer (Subject Subject) {
TODO auto-generated Constructor stub
This.subject=subject;
Subject.attach (this);
}
/**
* Status Change
*/
public abstract void Updata ();
}
Package lyj.main;
public class A extends observer{
Public A (Subject Subject) {
Super (subject);
}
@Override
public void Updata () {
System.out.println ("A" +subject.getstate ());
}
}
Package lyj.main;
public class B extends observer{
Public B (Subject Subject) {
Super (subject);
}
@Override
public void Updata () {
TODO auto-generated Method Stub
System.out.println ("B" +subject.getstate ());
}
}
Observer mode (subscription/logoff mode)