设计一个类

本文关键字:一个 | 更新日期: 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

相关文章: