Rod*_*uiz 5 architecture design-patterns use-case ios
问题1:使用2种方法执行相同操作构建用例(或多个用例)的正确方法是什么?
例如:
我在iOS应用程序中有3个屏幕:
1.地图视图,可以"长按"并具有相机按钮.
2.摄像机视图,如果用户在地图视图中点击摄像机按钮,则会显示该视图.
3.位置/引脚编辑视图,如果用户"长按"地图视图,或在用户在摄像机视图中选择照片后显示.此编辑视图有一个保存按钮,用于实际创建带有照片和位置的位置(长按坐标或当前位置以防按下相机按钮).
标题:创建场所基本流程:
1.用户在地图上"长按".
2.应用程序删除临时图钉并显示场所编辑视图.
3.用户编辑地点信息并按下保存按钮.
4.应用创建场所并保存.
标题:创建场所基本流程:
1.用户按下加号按钮.
2. App显示摄像机视图.
3.用户拍照.
4.应用程序创建具有当前位置和图片的位置.
根据与bhavik交换的评论进行更新.
问题2 :(基于bhavik的答案)
因此,我不需要一个交互者的一个演示者,我可以有1个交互者和3个演示者/视图.
那是对的吗?
问题3:我的交互方的边界方法是否总是返回无效?
在bhavik的例子中,他们正在返回一些东西,但在VIPER博客和叔叔Bob的视频中,他们总是返回void,结果以另一个边界方法的形式出现,交互者调用演示者/控制器.
问题4:当叔叔Bob的视频使用控制器和演示者与交互者进行不同的交互时,VIPER方式不使用控制器,只有演示者与交互者交谈.我应该采取哪种方法?
问题5:如果我的用例类似于"转到其他屏幕",它是否应该有一个交互器?由于当前视图将告诉其演示者按下了什么按钮(要查看的视图),并且此当前演示者将告诉其线框"更改为此另一个线框".
bha*_*hah 12
问题1:使用2种方法执行相同操作构建用例(或多个用例)的正确方法是什么?
在VIPER设计中,您可以在同一个Interactor中创建两个适用于用例的每个主要和替代的方法.
问题2 :(基于bhavik的答案)因此,我不需要一个交互者的一个演示者,我可以有1个交互者和3个演示者/视图.
根据我们的讨论和您的更新,我想我更了解它.
CameraView.所以,你应该有一个EditPlacePresenter/View为EditPlaceInteractor带或不带照片传递数据放置数据.
问题3:我的交互方的边界方法是否总是返回无效?
在bhavik的例子中,他们正在返回一些东西,但在VIPER博客和叔叔Bob的视频中,他们总是返回void,结果以另一个边界方法的形式出现,交互者调用演示者/控制器.
我想你指的是接收Interactor结果的下面的Presenter方法.
- (void)foundUpcomingItems:(NSArray*)upcomingItems
Run Code Online (Sandbox Code Playgroud)
为了使上述工作正常,交互者将拥有委托实例,这些实例将由Presenter/Controller进行连线/修补,以查找结果或数据.这意味着Presenter/Controller与Interactor绑定,或者在每个Interactor方法调用中传递它们的引用或返回函数指针.这是设计的吗?
我认为,Interactor应该根据用例返回数据.例如,Interactor应该返回EditPlaceResult成功或失败.
这应该是用例的一部分.如果没有,它不应该返回任何东西.它将返回void,Presenter将查询单独的Interactor以检查Map Place是否成功添加.
博客中的参考文献:
问题4:当叔叔Bob的视频使用控制器和演示者与交互者进行不同的交互时,VIPER方式不使用控制器,只有演示者与交互者交谈.我应该采取哪种方法?
您需要为以下导航定义VIPER路线:
MapView至CameraView(使用位置)MapView至EditPlaceView(使用坐标)CameraView至EditPlaceViewMapView如果成功则跳回根据VIPER博客,Presenters和Wireframes使用视图控制器和导航控制器.
VIPER线框处理导航并使视图控制器变得精简,平均,视图控制机器.
基本上,线框抽象出导航控制器,而是提供路线定义.
线框
主持人
问题5:如果我的用例类似于"转到其他屏幕",它是否应该有一个交互器?由于当前视图将告诉其演示者按下了什么按钮(要查看的视图),并且此当前演示者将告诉其线框"更改为此另一个线框".
不可以.导航作为用例的一部分可能不需要Interactor.它只是过渡.目标Presenter可能需要一个Interactor.例如,CameraView/Presenter不需要Interactor但EditPlaceView需要保存地点.
总体而言:架构模式背后的理念是将给定的软件应用程序划分为互连的部分,以便将信息的内部表示与向用户呈现或接受信息的方式分开.MVC,MVP,MVVM,VIPER都专注于以某种方式隔离视图,逻辑和导航.
建筑模式受限于他们打算分解的东西.我们必须明白,架构模式不会分解或隔离所有内容.此外,如果一个架构模式将某些职责委托给某个部分,则其他部分可能根本不会这样做,或者将多个职责分配给单个部分.
我们被允许延长或限制隔离和分解,以使其证明原因合理,并且不会对超出成本的关注点进行不必要的分离.您可以选择使用导航控制器,您的演示者可以在不定义线框路径的情况下依赖它们.然后,这些控制器将负责屏幕之间的导航.
| 归档时间: |
|
| 查看次数: |
12645 次 |
| 最近记录: |