2010-05-27 20 views
0

我要寫一個簡單的方法extractArticle(),它返回從Message對象中提取的Article對象。我有MessageService和ArticleService類來處理這樣的任務。什麼樣的服務類更正確地用來包裝extractArticle()函數?用什麼服務類來封裝方法

$ article = MessageService :: extractArticle(Message $ message);

$文章= ArticleService :: extractArticleFromMessage(消息$消息);

回答

0

MessageService和ArticleService似乎是名詞。服務通常會做些事情,所以命名爲動詞。

我認爲這篇文章的內容是某種格式的消息,所以會有一個ArticleParser解析消息並創建一篇文章。

消息服務或文章服務是否具有消息解析器取決於這些服務的職責,這很難從名稱中猜出。如果消息服務是一個消息轉發服務,並且文章服務有一個接收消息的端點,那麼我認爲解析就是發佈端點。這些模式在patterns of enterprise integration中得到了很好的解釋 - 將消息轉換爲域對象,轉發等等。

但是沒有'最佳實踐'的答案。最好的做法是考慮服務的職責是什麼,通常最好在服務之間進行轉換,而不是在服務之間進行轉換。

0

您的ArticleService目前是否知道消息?如果沒有,我會投票投入MessageService

通常,請考慮消息和文章之間存在哪些依賴關係,以及如何控制這些依賴關係。

0

我不認爲在這種情況下在MessageService或ArticleService中定義是否有很大的區別。但是,提取本身的工作應該由Message類中定義的方法處理。無論您決定使用哪種服務類別,都只是一個簡短的包裝消息:: extractArticle()。 Message類的這種方法是封裝發生的地方。

0

從消息中提取文章是您對消息執行的功能,所以我會說它在邏輯上屬於MessageService類。