以下代码是小弟从JForum论坛代码中抽象提取出来的(与JForumExecutionContext相关的)。
[code="java"]
public class Person{
private string name;
private static HashMap<String,Person> hm=new HashMap<String ,Person>();
public void setName(String name){this.name=name;}
public static Person getPerson(){
Person p=hm.get("p1");
if(p==null){
p=new Person();
hm.put("p1",p);
}
return p;
}
public static void setPerson(Person p){hm.put("p1",p);}
}
[/code]
[code="java"]
public class Test{
public static void main(String []args){
Person p=Person.getPerson();
p.setName("Jack");
p.setPerson(p);
}
}
[/code]
小弟一直迷惑的是Test类中,为什么还要加入p.setPerson(p);这一行代码,个人认为这行代码多此一举。如果必须要有p.setPerson(p);这行代码,原作者为什么要这样写,是不是用了什么设计模式?请高手明示,感激涕零!!! :D