Singleton Session Pattern (单实例会话模式)

来源:互联网 发布:java相关毕业论文题目 编辑:程序博客网 时间:2024/05/15 15:16

Singleton Session Pattern

Posted By: Artem Yegorov on April 29, 2004 @ 01:43 PM

单实例会话模式使得代码可读性增强,并且能充分使用JAVA的继承和抽象去定义和访问单实例应用程序和框架中的变量,如Struts 。在Struts 中,每一个行为都初始化(istantiated)一次,并且被重用在Context 中,(直到重启和重新加载),因此所有的这些变量都有必要传递给一个自定义的行为,这个行为有必要被定义localy并且传递到一个方法,在执行方法中。我们可以创建一个会话类其中有getObject(Object key)和 setObject(object key,object obj)系列方法,且定义所有的必需变量和对象使用两个方法,同时传递唯一的会话实例到所有的必要的方法。

public class StrongTypedSingletonSession {
private String a = null; private String b = null; private String c = null;
public void setA(String a) {
this.a = a;
}
public String getB(String b) {
this.b = b;
}
public String getC(String c) {
this.c = c;
}

public String getA() {
return this.a;
}

public String getB() {
return this.b;
}
public String getC() {
return this.c;
}
}

In this example you know before hand what objects you need to set and access, including those object's types.

It could also be weakly-typed, eg.:

public class WeaklyTypedSingletonSession {
private Map objects = new HashMap();

public void setObject(String key, Object obj) {
synchronized(this.objects) {
this.objects.put(key, obj);
}
}

public Object getObject(String key) {
Object obj = null;

synchronized(this.objects) {
obj = this.objects.get(key);
}
return obj;
}
}
这个例子使得你可以定义任何数目的任何类型的对象,在程序中自定义的部分决定那个特殊对象我们需要。

这个模式帮助我很多当我使用那个Struts 框架时,所以我的框架模块可以在WEB上被访问且获益于Struts 的功能,我的框架本身分开于任何指定的具体访问方法。但是程序插件实例化时要使用请求和响应对象,这些对象在Struts Action 中是可用的,我将会定义的。连同其它对象象Action mapping 和Action form 在一个Weakly tape 单实例会话中,且传递给我的类保证灵活性和类型抽象.

原创粉丝点击