Ptt-official-app / Ptt-iOS

37 stars 7 forks source link

Refactor flow control to coordinator #12

Closed JackySONE closed 3 years ago

JackySONE commented 3 years ago

Coordinator是一個可融入各個架構的流程design pattern。可以解開各個ViewControllers之間的相依性,將頁面切換邏輯流程統一集中在Coordinator,大大降低耦合性可以減少流程調整的複雜度

所以每個ViewController通常都會一個BaseView的Protocol,透過closure來向外傳遞資料

Coordinator通常也只認識BaseView的Protocol,而不知道實際的ViewController。但也只要知道這些事件傳遞資訊足以決定下一步的頁面流程

可能會困惑本來UIViewController都知道自己的NavigationController。但其實navigationController是optional,所以也不能保證會work(使用 show(vc:, sender: )也是無法保證的 )

網路上有許多新到舊的Coordinator文章可以參考,以下兩則是此PR的主要參考,除了Coordinator,還加上工廠模式統一ViewControllers立與Coordinators的建立 Coordinators Essential tutorial. Part I Coordinators Essential tutorial. Part II