2011-10-10 81 views
1

我有一個供應商和一個客戶對象。到現在爲止還挺好。3個不同對象的OOP概念

我希望發送一封電子郵件給客戶,但要尊重一些很好的舊時尚OOP概念,在供應商或客戶端添加發送電子郵件方法並不好,因爲這些方法會破壞SRP原則(等等)。我應該說:在客戶和供應商中,我都有一些基本的CRUD操作。

那麼解決方案是什麼? 使用靜態方法的SupplierClientEmail類,即使此類可能永遠不會被觸摸或再次使用?你如何處理你的代碼中的這些概念?

回答

0

您是否需要保留電子郵件記錄?如果不是,那麼你並不真的需要一個對象。你可以有一個EmailService,有一個方法sendEmail(client, supplier)或任何有意義的。

如果您確實需要跟蹤電子郵件,例如在數據庫中存儲某種標記以顯示電子郵件已發送,則可以使用Email類,該類具有對客戶端和供應商的引用,其中包含信息dateSent以及您需要的任何其他信息。這樣,您可以隨時返回並查看向哪個客戶/供應商發送了哪封電子郵件。在這個計劃Email知道客戶和供應商,但這些類不知道電子郵件。

+0

我不需要跟蹤,但最終EmailService將有一個sendEmail方法的客戶端和供應商,然後sendEmail2客戶端和產品等,是不是這個新類傾向於更改? – danidacar

+0

@danip,是的,但事實如此,無論您不知道您需要支持哪些電子郵件操作。它不會是'sendEmail2',它應該被適當命名,例如'sendClientProductEmail'和'sendClientSupplierEmail'等等... – hvgotcodes

0

如果它確實是一種方法,您將在此處使用一次,永遠不會再使用,並且只能與供應商對象一起使用,因此將其作爲方法包含在此處纔有意義。在我個人看來,單一類方法比單純添加一個私有方法更加混亂和不實。

另一種選擇是類似於EmailHelper類,然後您將此方法引入,以及任何其他電子郵件相關的鬆散擬合方法。