设计一个类
本文关键字:一个 | 更新日期: 2023-09-27 17:58:45
我正在设计一个由其他类的对象组成的类,现在我正在接受通过函数参数实例化这个类的值。这个类是按会话创建的(从用户登录到注销)。对于会话,UserInteraction对象将是全局的,即:-它可以在任何时间从任何文件使用。我计划在用户登录时为对象分配内存,这样每次用户登录时对象都是"新的"。
然而,我有一种感觉,我做的事情不对。如果我可以使用任何其他模式来改进代码,请提供建议。
class UserInteraction
{
private UserDetails _loginDetails; // information of the user logged in.
private UserFiles[] _userFilesDownloaded; // files downloaded for the user.
private PrintStatus _printStatus; // Details of files printed
public UserInteraction() { }
public UserDetails UserInfo {
get { return _loginDetails; }
set { _loginDetails = value; }
}
public PrintStatus Status {
get { return _printStatus; }
set { _printStatus = value; }
}
public UserFiles[] FilesDownloaded {
get { return _userFilesDownloaded; }
set { _userFilesDownloaded = value; }
}
}
在设计某个类之前,至少要清楚它的职责和协作(它所依赖的其他对象,以执行它的职责)。
试着想想谁会实例化/使用这个对象,它的生命周期以及它将如何/何时被销毁。
清楚这些基本设计原则http://en.wikipedia.org/wiki/Solid_(面向对象的设计)。
正如@Thomas Levsque所提到的,"不要试图在不需要的地方应用模式……",它们只是良好设计原则的延伸。
写更简单
Class UserInteraction
{
public UserDetails UserInfo { get; set; }
public PrintStatus Status { get; set; }
public IList<UserFiles> FilesDownloaded { get; set; }
}
正如我们所看到的,这个类实际上并没有任何功能。我首先要问的问题是,UserInteraction
是否是一个抽象实体,是什么将这些信息绑定在一起。你所说的全球化是什么意思?
"在这里吸鸡蛋"我用流利的英语描述我的问题和我想要实现的目标。然后我把我用过的每个名词都当作一个可能的类名。这是否正确取决于你问题的背景。
EDIT听起来你想要Singleton模式,或者可能是一个Singleton来容纳用户的IList
在实例化类UserInteraction时,可以避免构造函数,如下所示
UserInteraction obj = new UserInteraction
{
UserInfo = some Value;
Status = some Value;
FilesDownloaded = some Value;
};
如果属性是读/写的,则不需要Get和Set。根据我的理解,它可以写如下。
public UserDetails UserInfo{ get; set; }
public PrintStatus Status{ get; set; }
public UserDetails UserInfo{ get; set; }
如果你已经阅读了KKK4SO的优秀建议,并且你仍然想要它,你可以尝试实现一个Singleton模式:在C#中实现Singleton