【问题标题】:Can any one give example of dependency injection with MVC swift IOS?任何人都可以举出使用 MVC swift IOS 进行依赖注入的例子吗?
【发布时间】:2019-01-26 17:35:10
【问题描述】:

我有点坚持使用 mvc swift 进行依赖注入。我知道什么是 mvc。我只需要知道如何使用依赖注入?我们为什么要使用它?什么是依赖注入? 而且我还需要知道 IOS(swift)项目的好的设计模式是什么? mvc 还是 mvvm?如果你们可以通过示例(我的意思是代码)为这些问题提供答案,那对我将非常有帮助。 谢谢!

型号

class Person {

    private var name: String?
    private var age: Int?

    init(name: String,age:Int){
        self.name = name
        self.age = age
    }

}

【问题讨论】:

    标签: swift model-view-controller mvvm dependency-injection


    【解决方案1】:

    您可以使用依赖注入在运行时将依赖项传递到您的对象中。这在单元测试时有很大帮助,因为您可以提供模拟/存根对象,并防止您的对象进行网络调用或更新数据库记录等。这也是一个很好的做法,因为您的 ViewControllers 没有配置和初始化它的依赖项,这在课堂之外完成,保持这种逻辑。使以后更容易交换依赖项。

    例如,在 ViewController 中你可以传入一个网络服务:

    private let service: NetworkService
    
    init(service: NetworkService) {
        self.service = service
        super.init(nibName: String(describing: SomeViewController.self),
                   bundle: .main)
    }
    

    要对此进行单元测试,您只需传入一个模拟/存根对象,而 ViewController 并不明智,它仍然可以接收数据,但它将是您提供的数据,因此是可预测的,因此更具可测试性。

    【讨论】:

    • 所以在这种情况下 NetworkService 是我们的模型。然后我们创建一个对象并注入我们的依赖项?对吗?
    • NetworkService 只是一个处理网络调用的类,但它可以是任何东西。所以在初始化类的时候我们初始化服务,通过传入已经配置好的服务来初始化类
    • 这意味着我们应该通过属性传递它!好,知道了。谢谢顺便说一句
    • 是的,网上有很多资源可以更好地解释它,并提供更多关于如何使用它及其好处的示例
    猜你喜欢
    • 1970-01-01
    • 2015-06-01
    • 2019-11-24
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多