我現在有一類Message_Repository
具有類似的方法:OOP原則 - 如何構建類
getLocationDetailsByID($messageId),
getCustomerDetailsById($messageId),
getMessages(),
updateMessageForEmail(array $data), //this takes an array which includes the message ID
getLinkIndicatorById($messageId),
setIndicator($data) //this takes an array which includes the message ID
這些方法,其中在大多數情況下,我選擇各種數據的所有數據庫交互,並在某些情況下,我正在進行更新。
我發現,因爲我充實了這一點,我的類的名字不再代表發生了什麼事在班上,至少不完全。
是否有最好的做法是說一個Location_Repository
類和一個Customer_Repository
類,該類將容納獲取與主題相關的數據的方法?
仍試圖理解單一責任。理論上它似乎很簡單,但實際上我發現它更具挑戰性,特別是當我的課程不斷髮展和變化時。絕對需要重構,但要確保我正確地思考這個問題。
編輯 我可能會添加與我的班級的名稱混淆。它不是嚴格意義上的設計模式的「存儲庫」,而僅僅是我用來與數據庫進行交互的類的命名約定。可能需要重命名它。
你能簡單介紹一下這些功能的用途嗎?你傳遞給這些功能的ID是什麼?它是一個消息ID,還是位置/客戶/ LinkIndicator ID? –
@NiettheDarkAbsol消息ID是數據庫中各個表之間的主鍵,大多數方法都使用該消息ID來獲取所需的數據,所以它被傳遞到我提到的所有方法中。有一個或兩個其他方法(我的問題中沒有列出)不接收消息ID。 – hyphen
我明白了。在這種情況下,你的構造函數應該使用這個ID,那麼你應該把'getLocationDetails'作爲對象的非靜態方法,它會返回這些細節。 –