我目前正在尝试在我的项目中实现VIPER-architecture,我遇到了一些问题。
我的应用程序中有两个模块,它们有一些相似的功能(它们都有imagePicker和上传媒体到服务器的能力,在两个屏幕上实现完全相同)。
我的问题是,我如何在两个模块中重用这种相似的功能?问题是,我的imagePicker在Interactor中声明了许多方法,它们在选择和上传图像时处理不同的事件(例如didUploadMediaFile()、didFailToUploadMediaFile()、uploadMediaFile()等)。
我是否应该创建具有此功能的第三个模块,然后以某种方式从它继承其他模块?或者也许有更好的方法呢?
发布于 2017-04-11 10:05:52
我使用的唯一类似的组件/方法是Data Managers,它可以在您想要的任意多个Interactor之间共享,并且100%符合VIPER架构。
因此,调用MediaApiDataManager()的DataManager将负责将核心代码实现为UploadMediaFile()等
我建议你阅读这篇文章,以获得更多关于毒蛇的好技巧:https://www.ckl.io/blog/best-practices-viper-architecture/
发布于 2016-06-06 20:08:14
我认为您需要创建抽象类并在imagePicker逻辑中实现。使用didUploadMediaFile()、didFailToUploadMediaFile()、uploadMediaFile()方法为其类声明接口(协议),在类中实现此方法并注入到您的VIPER模块中
发布于 2020-08-01 04:14:41
对于这两个模块,尝试抽象出相似性,并尝试构建一个类。如果两个类使用泛型的数据类型不同,您也可以使用协议,因此在一个协议中声明两个模块的公共方法,并将每个模块实现为扩展。也许这篇教程会有所帮助。https://medium.com/@richiemon/protocol-extension-dispatching-6d5229f1338e
https://stackoverflow.com/questions/37656759
复制相似问题