# UITableView 解耦 ###### tags: `tutorial` > [name=Kevin Chiang] > [time=Wed, Jun 23, 2021 4:48 PM] 解耦核心思想是【彼此獨立,互不依賴】 在高耦合的情況下,很容易發生一種情況。 明明只是一個很小的需求異動,但是連帶影響到跟它有相依關係的部份。 造成修改一小塊程式碼,導至很多地方都出錯, 要花額外時間去修正被影響的程式碼。 最常見的情況就是`資料`與`商業邏輯`的高耦合,或是`UI`與`商業邏輯`的高耦合。 — — — — — — — — — — — — — — — — — — 之前有跟大家分享過一篇文章(附連結), 裡面就提供了 UITableView 非常好解耦的方式, 你只需對 TableView 提供 資料陣列(Models), TableView 就可以幫你正確的生成不同種類的 Cells 完全不需要在 cellForRowAtIndex 寫一堆 switch 來生產不同 cell 及 configCell — — — — — — — — — — — — — — — — — — 有使用過 IGListKit 的人會發現,這套操作方式很像 IGListKit 但是使用這套 protocol 的設計方式, 1. 學習曲線比 IGListKit 低很多,不怕其他人誤用亂設計 (最巨的坑...) 2. 可以讓你享受 IGListKit 控制 data flow 的優點, 3. 又不用面對 IGListKit 一堆行為詭異的動畫與惱人的 API — — — — — — — — — — — — — — — — — — 文章連結: https://medium.com/@kriskline_7025/how-to-build-a-tableview-with-multiple-cell-types-using-protocols-f94ff3320e8d — — — — — — — — — — — — — — — — — — @all 實際操作方式在 JBPorn 的 HomeCell 可以看到, 我真的希望大家可以好好的把這招學起來, 對 `低耦合、高內聚` 的領悟會更加深刻, 早日脫離『麵條式代碼』的深淵