jtflyweight.java
来自「Java Pattern Oriented Framework (Jt) 是为了」· Java 代码 · 共 146 行
JAVA
146 行
package Jt;
/**
* Jt Implementation of the Flyweight pattern.
*/
public class JtFlyweight extends JtComposite {
public static final String JtCLASS_NAME = JtFlyweight.class.getName();
private static final long serialVersionUID = 1L;
private Object factory = null;
// Messages
public static final String JtGET_FLYWEIGHT = "JtGET_FLYWEIGHT";
public static final String JtCREATE_FLYWEIGHT = "JtCREATE_FLYWEIGHT";
public JtFlyweight () {
}
/**
* Specifies the factory.
*
* @param factory factory
*/
public void setFactory (Object factory) {
this.factory = factory;
}
/**
* Returns the factory.
*/
public Object getFactory () {
return (factory);
}
/**
* Process object messages.
* <ul>
* <li> JtGET_FLYWEIGHT- Returns the flyweight specified by msgContent if it exists.
* If it doesn't exist, create it (by sending JtCREATE_FLYWEIGHT to the factory) and return it.
* </ul>
* @param message Jt Message
*/
public Object processMessage (Object message) {
String msgid = null;
JtMessage e = (JtMessage) message;
//Object content;
//Object data;
JtMessage tmp;
JtInterface aux, aux1;
if (e == null)
return null;
msgid = (String) e.getMsgId ();
if (msgid == null)
return null;
//content = e.getMsgContent();
//data = e.getMsgData ();
// Remove this object
if (msgid.equals (JtObject.JtREMOVE)) {
return (null);
}
if (msgid.equals (JtFlyweight.JtGET_FLYWEIGHT)) {
tmp = new JtMessage (JtComposite.JtGET_CHILD);
tmp.setMsgContent (e.getMsgContent ());
aux = (JtInterface) super.processMessage (tmp);
if (aux != null)
return (aux);
if (factory == null) {
handleError ("processMessage: factory attribute needs to be set");
return (null);
}
handleTrace ("Jt.Flyweight: processMessage creating a new flyweight");
tmp = new JtMessage (JtFlyweight.JtCREATE_FLYWEIGHT);
tmp.setMsgContent (e.getMsgContent ());
aux1 = (JtInterface) sendMessage (factory, tmp);
tmp = new JtMessage (JtComposite.JtADD_CHILD);
tmp.setMsgContent (aux1);
super.processMessage (tmp);
return (aux1);
}
return (super.processMessage (message));
}
/**
* Demonstrates the messages processed by JtFlyweight.
*/
public static void main(String[] args) {
JtObject main = new JtFactory ();
JtFlyweight flyweightp;
// Create an instance of JtColletion
flyweightp = (JtFlyweight) main.createObject (JtFlyweight.JtCLASS_NAME, "flyweight");
//main.sendMessage (composite, new JtMessage ("JtTEST"));
main.removeObject (flyweightp);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?