MVP 架构。
我正在制作一个应用程序,允许您通过 instagram 登录,然后显示您帐户中的一些信息。
我了解我应该拥有一个个人资料模型(Instagram 上的页面个人资料)。
事实证明,我将有一个演示者和一个ProfileService
用于加载数据的类。
也就是说
struct Profile
,
protocol ProfileViewDelegate
class ProfilePresenter {
var pc: ProfileService
var pfd: ProfileViewDelegate
}
class ProfileService
我已经有两个屏幕:授权和配置文件显示。假设我还有几个屏幕,例如,显示订阅者列表。我是否还需要单独为其制作演示者等?我是否需要为每个屏幕、授权屏幕等设置演示者?
如果我误解了,你能建议一个近似的类结构吗?
如果您想在个人资料中显示图像,那么您还需要一个模型
Post
。view(ProfileViewDelegate
) 的协议最好像这样完成:在 Presenter 中做
weak var pfd: ProfileViewDelegate
.您还需要为 Presenter 制定协议。例如
ProfileOutput
,它将包含您想要执行的变量和方法。并且view
不是指定演示者类本身,而是从其继承的协议。也就是说,在视图中您需要执行以下操作:
在这种情况下,您可以输入“!”,因为它必须是。
每个控制器都必须有自己的演示者,并且有必要将应用程序分解为模块。
此外,对于每个模块,必须有一个 Assembly / Builder(在不同的团队中,它的名称不同)类。它可以是整个项目的一个,也可以是每个模块单独的一个。由于我们在演示者和视图中都与协议相关联,因此我们需要进行依赖注入。也就是说,必须从外部收集实体。它应该看起来像这样:
如果您想为整个应用程序创建一个构建器,则只需为每个模块创建自己的方法,例如
configureProfileModule
(configureFollowersModule
) 等。项目结构应该是这样的:
该模型通常放置在项目文件夹中的单独目录中,因为它可能会在整个应用程序中使用。如果只在模块内使用,则可以放在模块目录下
MVP 架构的本质是演示者(P)控制内容(M)的显示到视图(V)。那些。是的,所有屏幕都需要自己的演示者。
这是一篇关于架构主题的好文章:
https://habr.com/ru/company/badoo/blog/281162/