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."

  • https://clean-swift.com

Clean Swift_第1张图片

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.

Clean Swift_第2张图片

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

Clean Swift_第3张图片

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

Clean Swift_第4张图片

Worker

Handles all the API request/response calls for the Interactor

Clean Swift_第5张图片

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

Clean Swift_第6张图片

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

Clean Swift_第7张图片

你可能感兴趣的:(ios++,swift,xcode,ios)