2011-06-07 63 views
0

我正在设计一个包含其他类的对象的类,现在我接受通过函数参数实例化这个类的值。这个类是每个会话创建的(从用户登录到注销)。对于一个会话,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; } 
     } 
    } 
+4

是什么让你觉得有什么不对劲这段代码?不要尝试将模式应用到不需要的地方...... – 2011-06-07 08:25:15

+0

有多少用户会在线模拟? – DeveloperX 2011-06-07 08:25:34

+0

你的缩进可以做一些改进。但除此之外,这里还有一个具体问题吗? – 2011-06-07 08:25:38

回答

3

在你设计一些类至少与它的职责和合作清晰(其它对象它所依赖的,以履行其职责)。

试着去想谁会实例化/使用这个对象,它的生命时间以及它将如何/何时被销毁。

请注意这些基本设计原则http://en.wikipedia.org/wiki/Solid_(object-oriented_design)。

正如@Thomas Levesque所说,“不要尝试将模式应用到不需要的地方......”,它们只是对优秀设计原则的延伸。

+0

+1,虽然我不明白你最后的声明,请详细说明。 – jgauffin 2011-06-07 08:29:50

+0

@jgauffin我的意思是@Thomas Levesque在他的评论中提到的。 – Tatvamasi 2011-06-07 08:33:29

+0

那么为什么不问这个问题呢? – Jodrell 2011-06-07 08:37:05

0

可以避开构造函数,而实例化类用户交互像下面

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; } 
0

如果你读过通过KKK4SO优秀的建议,你还想要这个,你可以尝试实现一个Singleton模式:Implementing Singleton in C#

+0

如果建议非常好,你为什么不upvote它?:) – jgauffin 2011-06-07 08:29:06

+0

@jgauffin:你说得对,我应该有。 – 2011-06-07 08:31:40

+0

感谢您投票... – Tatvamasi 2011-06-07 09:10:49

1

容易编写

Class UserInteraction 
{ 
    public UserDetails UserInfo { get; set; } 
    public PrintStatus Status { get; set; } 
    public IList<UserFiles> FilesDownloaded { get; set; } 
} 

我们可以看到这个类doesent实际上有任何功能。我将从头开始的问题是UserInteraction某些抽象实体,它将这些信息绑定在一起。全球是什么意思?

“在这里吸鸡蛋”我描述我的问题和我想用英语达到的目标。然后我认为每个名词我都用作可能的类名。这是否正确取决于问题的背景。

编辑这听起来像你想的Singleton Pattern,或者一个单持有一个用户的IList