2009-08-17 32 views
2

Web項目中可以使用哪種模式?用於向維基頁面添加評論的模式?

我正在用ASP.NET開發一個wiki項目。在我的結構中,每個維基條目可以有 評論。

哪種方法是最好的:

wikiEntry.AddComments(newComment); 

wikiEntry.Comments.Add(newComment); 

entryManager.AddComment(wikiEntry, newComment); 
+0

我有點困惑。首先是非常簡單的。但第二種方法更加實用和可維護。 – devran 2009-08-20 17:04:09

回答

3
wikiEntry.AddComments(newComment); 

,客戶端代碼很簡單,沒有關於意見如何內部表示擔憂。

wikiEntry.Comments.Add(newComment); 

錯誤,客戶端應該擔心意見,如果空?沒有信息隱藏

entryManager.AddComment(wikiEntry, newComment); 

錯誤,responsabilities都是錯誤導致程序代碼

1

封裝建議1.我會與去。 (但這不是我實際做到的)。

0

如果評論是真正的意見,你可以執行各種操作,比如上市,刪除列表,添加,重命名,改變,我會跟

wikiEntry.AddComments(newComment); 

go如果wikiEntry莫名其妙地管理評論和內部你能做的就是增加新的唯一的事情,我會去用:

wikiEntry.Comments.Add(newComment); 

我永遠不會使用:

entryManager.AddComment(wikiEntry, newComment); 
+0

然後您使用wikiEntry.Save()進行保存過程? – devran 2009-08-17 08:12:18

0

所有其他thigh是平等的,我會去:

wikiEntry.AddComments(newComment);

這似乎是最簡單和最清晰的方式來表示你在做什麼。我發現最簡單的方法通常是最好的。

1

除了以前的答案,我會寫只有第二種方式:

wikiEntry。 Comments.Add(newComment);

這種方式不是那麼糟糕對方說

  1. 所有的工作涉及到通過評論財產,這是很容易和直觀的進行評論。

  2. 沒有必要爲所有者對象的每個新功能添加新方法(如AddComment,RemoveComment,FindComment等)。這樣所有者對象不包含所有內部對象的方法,它更小,更乾淨。有乾淨的代碼分離。

  3. 如果你想查詢評論,你只需要這樣做,並且不需要向所有者添加特定的FindBySomething方法。

您可以使評論永不爲空 - 在每次調用時都會對null進行不必要的測試。 一般來說,我沒有看到隱藏信息的問題,但這可能取決於特定的場景或應用程序。

微軟在他們的控件中廣泛使用這種模式。查看DataGrid的屬性Items和Attributes。

0

我肯定會去與wikiEntry.Comments.Add(newComment)方法。我在下面列出了我的理由。它感覺很直觀,因爲它與Microsoft現有控件的工作方式相同,因此您的代碼自然感覺就像是代碼庫的一部分。

它將一件事情的功能 - 評論 - 分成它自己的職責範圍。在Comments集合中,您可以添加,編輯,刪除,排序等。這樣,如果您想要也能夠添加,編輯,刪除,排序等參考列表,編輯,版主,歷史快照,不管你是否希望爲每一個這樣的集合,許多/你可能不會這麼做)

你可以在其他類中重用評論集合,並且已經有內置的功能用於處理對列表的修改。

想想:wikiEntry.Comments [parentComment] .Comments.Add(newComment);

爲您提供了一種表示嵌套註釋的簡單方法。