Viewer mode:
Roles designed to:
Topic: is an interface that must contain a list of observers, must have a method for adding, deleting, notifying the Observer
Specific topic: implementation classes for themes
Observer: is also an interface in which you need to define an action after receiving a notification
Specific Observer: The Observer's implementation class, while the observer is required to subscribe to the subject, which must be added to the subject's list of observers, and the unsubscribe is deleted
When the state of the subject changes, all observers are notified
Theme:
Package com.design2;
Public interface Subjectinterface {
VOID Add (Observerinterface observer);
VOID Delete (Observerinterface observer);
void Notifyobserver ();
void Givemess (String mess);
}
Specific topics:
Package com.design2;
Import java.util.ArrayList;
Import java.util.List;
public class Subject implements Subjectinterface {
List<observerinterface> observerlist;
String mess;
Boolean isnotify;
Public Subject () {
Observerlist = new arraylist<observerinterface> ();
Mess = "";
Isnotify = false;
}
@Override
public void Add (Observerinterface observer) {
IF (Observer! = NULL &&!OBSERVERLIST.CONTAINS (Observer)) {
OBSERVERLIST.ADD (Observer);
}
}
@Override
public void Delete (Observerinterface observer) {
if (Observerlist.contains (Observer)) {
OBSERVERLIST.REMOVE (Observer);
}
}
@Override
public void Notifyobserver () {
if (isnotify) {
for (Observerinterface object:observerlist) {
Object.update (mess);
}
}
}
@Override
public void givemess (String message) {
if (mess.equals (message)) {
Isnotify = false;
} else {
Mess = message;
Isnotify = true;
}
}
}
Viewer interface:
Package com.design2;
Public interface Observerinterface {
void update (String mess);
}
Observed by:
Package com.design2;
public class Observer implements Observerinterface {
private String name;
Private Subjectinterface subject;
Public Observer (String name,subjectinterface subject) {
THIS.name = name;
Subject.add (this);
}
@Override
public void Update (String mess) {
SYSTEM.OUT.PRINTLN (name + "received message:" + mess);
}
}
Test:
Package com.design2;
public class Application {
public static void Main (string[] args) {
Subjectinterface subject = new subject ();
Observerinterface Zhangsan = new Observer ("Zhangsan", subject);
Observerinterface lisi = new Observer ("Zhangsan", subject);
Subject.givemess ("123");
Subject.notifyobserver ();
Subject.givemess ("123");
Subject.notifyobserver ();
Subject.givemess ("456");
Subject.notifyobserver ();
}
}
Java common design Patterns-observer patterns