gpt4 book ai didi

swift - Clean Swift 架构中 Worker 的实现

转载 作者:行者123 更新时间:2023-11-30 10:43:04 25 4
gpt4 key购买 nike

我正在从头开始开发一个新项目,并且我希望以最佳方式实现有关此架构的一些概念。

在互联网上的许多引用文献中,我可以看到一些处理 Clean Swift 架构的示例。在这个架构中你可以发现Interactor具有 Worker 的依赖项类

   protocol InteractorLogic {
// Functions
}

class Interactor: InteractorLogic {
var presenter: PresenterLogic?
var worker: AWorker?
}

我的疑问是关于实现这个 Worker因为我在一些例子中看到 Worker他们把所有与场景相关的“用例”放在一起:

    protocol SceneWorkerLogic {

func getPosts(success: ((Posts) -> Void), error: ((Error) -> Void)))
func getUser(success: ((User) -> Void), error: ((Error) -> Void)))

}

class SceneWorker {

func getPosts(success: ((Posts) -> Void), error: ((Error) -> Void))) {

}

func getUser(success: ((User) -> Void), error: ((Error) -> Void))) {

}
}

在另一个示例中,它们将功能划分为不同的 Workers喜欢 UserWorkerPostWorker其中 CRUD 函数与 Users 相关和Posts已实现:

   protocol PostWorkerLogic {

func getPosts(success: ((Posts) -> Void), error: ((Error) -> Void)))

}

class PostWorker {

func getPosts(success: ((Posts) -> Void), error: ((Error) -> Void))) {

}


}

我认为第二种方法在 Clean Code 方面更好但我意识到,如果我们使用一个文件进行单个 CRUD 操作(例如 getUser),它可能会更整洁。或getPosts .

我该如何改进?

最佳答案

有很多方法可以做! 《整洁的 swift 》书中所展示的方式不是我最喜欢的......

我更喜欢使用具有依赖注入(inject)的工作人员作为外观模式来获取数据!执行此操作后,您将拥有现场工作人员和特定工作人员来完成这些工作。

示例:您有一个呈现电影列表的场景。该列表可以从网络或 coredata 获取,因此您将拥有一个工作人员,该工作人员接收您将在其 init 方法上使用的数据源类型,并使用 getMovies 方法实现协议(protocol),这将是场景工作人员!然后你将让其他工作人员从网络获取此数据,并从另一个工作人员获取核心数据,他们都必须使用 getMovies 实现该协议(protocol)!

我认为如果您获得我使用此架构从头开始构建的示例应用程序来更好地理解它会更好!我真的认为这种方式比他在 clean swift 示例应用程序(clean store)上使用的方式要好得多。

这是我使用 clean swift 的示例应用程序:https://github.com/chavitos/TheMovieDB

关于swift - Clean Swift 架构中 Worker 的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56388322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com