如何在iOS / Swift项目中明确区分ui和业务逻辑

时间:2018-12-15 14:59:33

标签: ios swift architecture

我是iOS开发的新手,但在Android / Java / Kotlin方面拥有丰富经验。因此,我倾向于将自己的ios项目结构化为类似于Android的项目。所以我使用的基本结构是

class MyViewController: UIViewController{
  private let viewModel = ViewModel()
} 

class ViewModel{
  func doSomethingAsync(delegate){
    SomeFactory.createService().doSomethingAsync(){
      delegate.callback
    }
  }
}

class SomeFactory{
  static func createService() -> Service {return ServiceImpl()}
}

class Service{
  func doSomething()
}

class ServiceImpl : Service{
  func doSomething(){... implementation...}
}

因此,视图控制器对业务逻辑或服务一无所知,并且看到的只是数据模型。视图模型提供了两者之间的桥梁。另外,没有人可以看到ServiceImpl类,并且只能通过工厂进行访问。这个设计是在顶部还是对iOS太“ javaish”?人们通常如何将他们的视图逻辑与应用程序的服务/业务逻辑分开?

1 个答案:

答案 0 :(得分:0)

viewController中 更新您的UI元素。

在没有ui元素更新的情况下,所有内容(业务逻辑)肯定会移至viewModel