0

我有一个应用程序,它将许多变量作为属性存储在会话中。每次我需要一个时,我都必须记住属性名称的确切含义,并将其转换回它的类型以使用它。

我正在考虑使用单个对象来包含所有这些变量,并将其称为“SessionManager”,这样我只需要记住一个属性名称并且转换不会失败。

我想知道这是否是一种模式,或者是否存在类似或更好的现有模式?

4

1 回答 1

0

听起来您的会话需要某种缓存。

你不能不知道属性名称。但是,您可以使用每种对象类型的专用方法跳过铸造部分(理想情况下,除了基元之外,您不会有很多不同的类型)

既然你提到了 Java EE,我会选择一个无状态 bean,它实现了接口中定义的以下操作:

String getString(string fieldName);
int getInt(string fieldName);
DateTime getDateTime(fieldName);
...
object getObject(fieldName); // for special scenarios
void setInt(string fieldName, int value);
void setString(String fieldnName, String value);
...

在 bean 实现中,我将添加额外的灵活性:

定义两个实现前一个接口的类(除了 bean 类)。一个可以从内存中存储和读取值,另一个可以从数据库中存储和读取值。并添加一个策略模式,让您选择要使用的类(同样,因为您使用 Java EE,这可能是一个 Application Server 变量)

总结一下:

创建一个公开您需要的类型的接口(以避免强制转换) 在 EJB 中实现所述接口 在您要使用的不同数据存储中尽可能多地实现所述接口 实现一个简单的策略模式(不需要专用类,一个开关EJB 中的语句会做)选择适当的类。从您的代码中调用 EJB 客户端。

希望有帮助

于 2012-08-21T14:14:19.667 回答