我有一个应用程序,它在会话中存储许多变量作为属性。每次我需要一个,我必须记住属性名称是什么,并将其强制转换为其类型以使用它。
我正在考虑使用单个对象来包含所有这些变量,并将其称为“SessionManager”,这样我只需要记住一个属性名称,并且转换不会失败。
我想知道这是一种模式还是存在类似或更好的现有模式?
答案 0 :(得分: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中的switch语句可以做)选择适当的类。 从代码中调用EJB客户端。
希望有所帮助