Mal*_*ker 59 architecture android design-patterns
以同样的方式,Web或桌面应用可能有三层或更多层 - 例如UI,业务,数据 - Android应用程序的建议结构是什么?你如何将课程组合在一起,你有什么样的层?
我刚刚开始Android dev(一个基于互联网的应用程序,必须响应传入的通知),并没有真正感受到我所针对的结构.建议表示赞赏.
lou*_*uio 16
恕我直言,Android"想"遵循MVC模式,但视图和控制器通常真正耦合在一起.
它使单元测试变得更难,并且很难遵守单一责任原则.
我发现这里有一个非常好的Android架构,可能有一个想法.一切都松散耦合,更容易测试和编辑.
显然,我确信还有很多其他的可能性(比如MVP模式(模型视图演示者) - 这里是关于Android中MVP的答案),但你仍然应该看看它.
Fin*_*ive 16
我现在已经在Android上工作了9个月,从服务器端的背景来看,完整的单元测试和分层架构很常见并且运行良好.
通过大量的试验和错误,我强烈建议使用Model View Presenter模式,而不是模型视图控制器.
我发现一个巨大的问题是Activities/ Fragments生命周期超出了您的控制范围,可能会导致意外问题.
例如,我们的主要Android应用程序希望在平板电脑上以横向模式使用.我们这样做OnCreateView()或OnCreate().
在Nexus 7上,默认视图是肖像,所以会发生的是它以纵向模式启动活动,然后我们的代码说到横向和android最终创建了activity3次类!
onCreate在这种情况下,我们已经连接了网络请求并最终发生了3次.
当然,我们可以添加逻辑来查找重复的调用,但在我看来,在架构上尝试将UI与业务逻辑分开会更好.
我的建议是使用工厂模式从活动创建演示者,但要确保工厂只返回相同的实例.然后,演示者可以包含执行网络请求的逻辑,查找重复项并返回缓存结果和一般业务逻辑.
当来自网络呼叫的结果返回时,要么发送到诸如Otto之类的总线,其中活动(注册事件onResume()和注销期间onPause())已经注册,或者确保活动实现的回调接口已更新为最后一个活动.主持人.
这样,presenter向下的代码是可单元测试的,不依赖于片状UI层测试.
Pen*_*m10 15
Android中的操作,视图和活动是使用Android UI的方式,是模型 - 视图 - 视图模型模式的实现,它在结构上与模型视图控制器相似(在同一系列中).
据我所知,没有办法打破这种模式.它可能已经完成,但您可能会失去现有模型的所有好处,并且必须重写您自己的UI层才能使其工作.
你可以在下面找到MVC:
There is no single MVC Pattern you could obey to. MVC just states more or less that you should not mingle data and view, so that e.g. views are responsible for holding data or classes which are processing data are directly affecting the view.
But nevertheless, the way Android deals with classes and resources, you're sometimes even forced to follow the MVC pattern. More complicated in my oppinion are the activites which are responsible sometimes for the view but nevertheless act as an controller in the same time.
如果您在XML文件中定义你的意见和布局,从res文件夹加载资源,如果你避免或多或少打成一片这个东西在你的代码,那么你无论如何遵循MVC模式.