jtobservable.java
来自「Java Pattern Oriented Framework (Jt) 是为了」· Java 代码 · 共 136 行
JAVA
136 行
package Jt;
/**
* Jt implementation of the Observer design pattern.
*/
public class JtObservable extends JtEnhancedObject {
public static final String JtCLASS_NAME = JtObservable.class.getName();
private static final long serialVersionUID = 1L;
public static final String JtADD_OBSERVER = "JtADD_OBSERVER";
public static final String JtREMOVE_OBSERVER = "JtREMOVE_OBSERVER";
public static final String JtNOTIFY_OBSERVERS = "JtNOTIFY_OBSERVERS";
public static final String JtNOTIFY = "JtNOTIFY";
public JtObservable () {
}
/**
* Process object messages.
* <ul>
* <li>JtADD_OBSERVER - Adds the observer contained in the message (msgContent)
* <li>JtREMOVE_OBSERVER - Removes the observer contained in the message (msgContent)
* <li>JtNOTIFY_OBSERVERS - Notifies its observers when the object changes
* state. If msgContent is null, a JtNOTIFY message is sent to the observers. A reference
* to this object is part of the JtNOTIFY message. If msgContent is not null, msgContent
* will be sent to the observers.
* </ul>
*/
public Object processMessage (Object event) {
String msgid = null;
JtMessage e = (JtMessage) event;
Object content;
//Object data;
JtMessage tmp, tmp1;
if (e == null)
return null;
msgid = (String) e.getMsgId ();
if (msgid == null)
return null;
content = e.getMsgContent();
//data = e.getMsgData ();
if (msgid.equals (JtObservable.JtADD_OBSERVER)) {
tmp = new JtMessage (JtComposite.JtADD_CHILD);
tmp.setMsgContent (content);
return (super.processMessage (tmp));
}
if (msgid.equals (JtObservable.JtREMOVE_OBSERVER)) {
tmp = new JtMessage (JtComposite.JtREMOVE_CHILD);
tmp.setMsgContent (content);
return (super.processMessage (tmp));
}
if (msgid.equals (JtObservable.JtNOTIFY_OBSERVERS)) {
tmp = new JtMessage (JtObject.JtBROADCAST);
if (content == null) {
tmp1 = new JtMessage (JtObservable.JtNOTIFY);
tmp1.setMsgContent (this);
tmp.setMsgContent (tmp1);
} else
tmp.setMsgContent (content);
return (super.processMessage (tmp));
}
//if (msgid.equals ("JtREMOVE")) {
// return (null);
//}
return (super.processMessage(event));
}
/**
* Demonstrates the messages processed by JtObserver
*/
public static void main(String[] args) {
JtFactory main = new JtFactory ();
JtObservable observable;
JtMessage msg;
JtEcho echo1, echo2;
// Create JtObservable instance
observable = (JtObservable) main.createObject (JtObservable.JtCLASS_NAME, "observable");
echo1 = (JtEcho) main.createObject (JtEcho.JtCLASS_NAME, "echo1");
echo2 = (JtEcho) main.createObject (JtEcho.JtCLASS_NAME, "echo2");
System.out.println ("JtObservable(JtADD_OBSERVER): adding an observer ...");
msg = new JtMessage (JtObservable.JtADD_OBSERVER);
msg.setMsgContent (echo1);
main.sendMessage (observable, msg);
System.out.println ("JtObservable(JtADD_OBSERVER): adding an observer ...");
msg = new JtMessage (JtObservable.JtADD_OBSERVER);
msg.setMsgContent (echo2);
main.sendMessage (observable, msg);
System.out.println ("JtObservable(JtNOTIFY_OBSERVERS): notifying observers ...");
msg = new JtMessage (JtObservable.JtNOTIFY_OBSERVERS);
main.sendMessage (observable, msg);
main.removeObject (observable);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?