2011-06-07 64 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