Clean Swift

Coined by Raymond Law in 2015

  • Wanted to improve testability in his projects.

  • "Clean Swift is not a framework. It is simply a set of Xcode templates to generate the Clean Architecture components for you."

Scene

In Clean Swift the project structure is built around scenes (or screens)

  • Model

  • View Controller

  • Router

  • Interactor

  • Presenter

  • Worker

  • Configurator

Use Xcode templates for creating scenes

Configurator

Initializes and connects all the previously mentioned components

Model

Use case structures defining data passed between components

  • Request (View Controller)

  • Input data coming from the view controller to invoke some business logic in the interactor.

  • Response (Interactor)

  • The result of some work passed from the interactor to the presenter.

  • View Model (Presenter)

  • The prepared data from the presenter for the view controller to update the views.

View Controller (Clean Swift)

The role of a View Controller is practically demoted to that of a view

  • Still receives calls to lifecycle methods

  • viewDidLoad, viewWillAppear, viewWillDisappear...

  • Still serves as the delegate

  • UITableViewDataSource, UITableViewDelegate...

  • Still handles user interaction

  • @IBAction...

  • No longer contains any business logic

  • This role is assumed by the Interactor

  • No longer transforms/prepares data for displaying

  • This role is assumed by the Presenter

  • No longer serves data and prepares the next
    view controller

  • This role is assumed by the Router

Interactor

The interactor handles all business logic and serves as a data store

  • This includes

  • Input data validation

  • Choosing which Worker is suitable for the task

  • Invoking the Workers to perform the actual processing

  • Storing the required data

  • Creating a response data and passing

it to the Presenter

Worker

Handles all the API request/response calls for the Interactor

Presenter

The presenter transforms and prepares response data for displaying

  • The response from the Interactor usually contains data in some non-formatted way

  • Date, NSNumber, CustomObject, ...

  • The ViewController in most cases needs simple values as Strings for displaying

  • Presenter formats the Date using a DateFormatter

  • String result is sent to the ViewController

Router

The router handles the navigation and passes the data between scenes

  • Navigation

  • Automatic segue

  • Manual segue

  • Programmatic

  • Data passing

  • Using the Interactor's Data Store capability

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值