我想弄清楚構建我的應用程序的最佳方法。我目前有一個圍繞CLLocationManager的包裝類,它將自己設置爲委託並處理我們需要的所有額外設置和業務邏輯。它也是一個單身(sharedManager)。在模型與控制器中使用CoreLocation的最佳做法
我希望儘可能真實地使用MVC,並將儘可能多的邏輯推入模型中,但我不確定最佳方式。目前,控制器和模型都獲得了sharedManager,並且在調用模式(控制器)或獲取當前位置之前,檢查位置是可用的,但在進行REST調用之前(模型),但這種感覺非常耦合且難以測試。
我想盡可能地使用依賴注入來避免不斷查詢我的代碼的所有部分中的單例方法,但我找不出最好的方法來做到這一點。
一些想法我有:
轉換我CLLocationManager包裝使用通知聊到應用的各個部分,以提高脫鉤。然後,我可以使用單例進行開始/停止呼叫,但是我的控制器/模型通過收聽通知來響應更改。這仍然無法避免必須在整個地方使用單身人士。
只能在控制器中使用單例並通過設置屬性將所需的位置數據傳遞給模型。這感覺會讓我的模型更容易測試,但不是我的控制器,並且將Core位置代碼放在控制器中也會感到噁心。
我可以通過設置屬性在模型和控制器上傳遞我的自定義位置管理器包裝的實例,但這感覺有點繁瑣,並且仍然存在問題,我在哪裏創建初始管理器?
我很想深入瞭解這個問題的人的一些建議。所有的想法都歡迎和讚賞!
我的方法是保持CLLocationManager包裝器,創建一個額外的類來管理儘可能多的邏輯,儘量保持控制器儘可能簡單並使用屬性設置數據。我也會在適當的情況下使用通知,以避免過多的耦合,但如果沒有應用程序需求,很難更具體。希望這可以幫助。 – mxb