One-Observer Mode
Defines a one-to-many dependency between objects. When the status of an object changes, all objects dependent on it are notified and automatically updated.
2. Java instance
[Java]
Package PostOfficeInstance;
Public interface ISubscribe {
Public void registered (Postoffice postoffice );
Public void unregistered (Postoffice postoffice );
Public void getNewspaper ();
}
Package PostOfficeInstance;
Import java. util. ArrayList;
Public class Postoffice {
Private ArrayList <ISubscribe> SubscribeList = new ArrayList <ISubscribe> ();
Private boolean received;
Public void registeredSubscribe (ISubscribe subscribe ){
SubscribeList. add (subscribe );
}
Public void unregisteredSubscribe (ISubscribe subscribe ){
If (subscribe! = Null) SubscribeList. remove (subscribe );
}
Public void setReceived (boolean received ){
This. Already ED = already ed;
}
Public boolean getReceived (){
Return received;
}
Public void sendNewspaper (){
If (this. getReceived () = false) return;
For (ISubscribe subscribe: SubscribeList ){
Subscribe. getNewspaper ();
}
}
}
Package PostOfficeInstance;
Public class Subscriber implements ISubscribe {
Private String mName;
Private String mNewspaperName;
Public Subscriber (String Name, String NewspaperName ){
This. mName = Name;
This. mNewspaperName = NewspaperName;
}
Public void setName (String name ){
This. mName = name;
}
Public final String getName (){
Return mName;
}
Public void setNewspaperName (String name ){
This. mNewspaperName = name;
}
Public final String getNewspaperName (){
Return this. mNewspaperName;
}
@ Override
Public void registered (Postoffice postoffice ){
// TODO Auto-generated method stub
Postoffice. registeredSubscribe (this );
}
@ Override
Public void unregistered (Postoffice postoffice ){
// TODO Auto-generated method stub
Postoffice. unregisteredSubscribe (this );
}
@ Override
Public void getNewspaper (){
// TODO Auto-generated method stub
System. out. println ("I am" + this. mName );
System. out. println ("I already ed" + this. mNewspaperName );
}
}
Package PostOfficeInstance;
Public class Test {
/**
* @ Param args
*/
Public static void main (String [] args ){
// TODO Auto-generated method stub
Postoffice postoffice = new Postoffice ();
Subscriber zhangsan = new Subscriber ("zhangsan", "Newspaper ");
Subscriber lisi = new Subscriber ("lisi", "Newspaper B ");
Subscriber wangwu = new Subscriber ("wangwu", "Newspaper c ");
Postoffice. registeredSubscribe (zhangsan );
Postoffice. registeredSubscribe (lisi );
Postoffice. registeredSubscribe (wangwu );
Postoffice. setReceived (true );
Postoffice. sendNewspaper ();
}
}
Test Results
[Java]
I am zhangsan
I have Ed Newspaper
I am lisi
I have Ed Newspaper B
I am wangwu
I have Ed Newspaper c