iOS—學習面向對象編程思想(二)

如果一個tableView中有很多cell,且每個cell的類型根據數據源類型的不同而不同,這樣哪個位置上的cell會是什麼類型的就沒有特定規律了,而在這種情況下如果根據每個數據源的類型用 if 語句判斷使用哪種類型的cell的話,可以完成功能需求,但會使得代碼非常冗餘、笨拙,而且如果cell數目非常多,這樣寫就有些不切實際了。這種情況下就需要使用設計模式了。首先寫一個配置類,控制器類中設一個存放配置類的數組,在請求得到數據源數組之後,依次將數組中需要的數據映射到配置類中相應屬性,然後將其放到配置類數組中,cell的類型及數據都從配置類中得到。對於cell要用到工廠模式,先創建一個cell基類,根據cell的類型創建相應的cell子類。在控制器的 cellForRowAtIndexPath 方法中創建cell基類,然後根據相應配置類中類型屬性給cell的類型屬性賦值,在cell基類內的創建方法中根據傳入的類型參數創建相應的cell子類。

這樣做控制器類中 cellforRowAtIndex 方法中就少了很多的條件判斷來顯示相應cell,只需要傳入相應的cell類型,將判斷轉移到cell基類的創建方法的實現中(可用switch語句,最多需要判斷cell的類型個數次)。

總結:如果一段代碼中出現了大量的條件判斷(有時可能還會存在嵌套判斷),可能就需要考慮一下代碼是否需要重構一下了,可能會用到相應的設計模式,像工廠模式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章