Я относительно новичок в разработке под 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
и доступен только через фабрику.Является ли этот дизайн чрезмерным или это слишком "javaish" для IOS?Как люди обычно разделяют свою логику представления с помощью служебной / бизнес-логики приложения?