在Java中为Android实现模型-视图-控制器(MVC)模式是否可行?
或者已经通过活动(Activities)实现了它?还是有更好的方法来实现Android的MVC模式?
在Java中为Android实现模型-视图-控制器(MVC)模式是否可行?
或者已经通过活动(Activities)实现了它?还是有更好的方法来实现Android的MVC模式?
在 Android 中,没有 MVC 模式,但您可以使用以下内容:
并没有普遍适用的MVC模式。MVC是一个概念,而不是一个完整的编程框架。你可以在任何平台上实现自己的MVC。只要你坚持以下基本思想,你就在实现MVC:
还可以这样考虑它:当你编写模型时,模型不需要关心渲染(或特定于平台的代码)。模型会对视图说,“我不在乎你的渲染是Android、iOS还是Windows Phone,这是我需要你呈现的内容。” 视图只会处理特定于平台的渲染代码。
使用Mono共享模型以开发跨平台应用程序时,这尤其有用。
Android 上的行为、视图和活动是处理 Android UI 的内置方式,是实现模型-视图-视图模型(MVVM)模式的一种方法,该模式在结构上与模型-视图-控制器相似(同一家族)。
据我所知,没有办法跳出这个模式。虽然可能可以做到,但您很可能会失去现有模式的所有好处,并不得不重写自己的 UI 层使其工作。
Button
的子类知道关于_Controller_的?似乎更合理的是_Views_只知道关于显示事项。考虑到_Model_只知道数据的本质,这就是为什么需要_Controller_的原因:某些东西必须同时了解_Model_和_View_。 - 18446744073709551615没有一种固定的MVC模式可供遵循。MVC只是更或少地说明您不应混淆数据和视图,例如,视图负责保存数据或处理数据的类直接影响视图。
但是,Android处理类和资源的方式有时甚至迫使您遵循MVC模式。在我看来,更复杂的是活动,它们有时负责视图,但同时充当控制器。
如果您在XML文件中定义了视图和布局,并从res文件夹加载资源,并且在代码中尽量避免将这些东西混合在一起,则无论如何都是在遵循MVC模式。
我还在此处发布了更详细的答案。
在尝试多种Android MVC/MVP实现方法后,我提出了一个合理的架构模式,并在这篇文章中进行了描述:Android中的MVP和MVC架构模式。
我发现实现Android上MVC的最佳资源是这篇文章:
我在一个项目中采用了相同的设计,效果很好。我是一个Android初学者,所以不能说这是最好的解决方案。
我做了一个修改:我在应用程序类中为每个活动实例化模型和控制器,以便在横竖屏模式更改时不会重复创建它们。
Android中的MVC架构 在android中最好遵循任何形式的MVP而不是MVC。但是根据问题的答案,这也可以是一种解决方案。
描述和指南
Controller -
Activity can play the role.
Use an application class to write the
global methods and define, and avoid
static variables in the controller label
Model -
Entity like - user, Product, and Customer class.
View -
XML layout files.
ViewModel -
Class with like CartItem and owner
models with multiple class properties
Service -
DataService- All the tables which have logic
to get the data to bind the models - UserTable,
CustomerTable
NetworkService - Service logic binds the
logic with network call - Login Service
Helpers -
StringHelper, ValidationHelper static
methods for helping format and validation code.
SharedView - fragmets or shared views from the code
can be separated here
AppConstant -
Use the Values folder XML files
for constant app level
注意 1:
现在你可以做一些奇妙的事情。一旦你分类了代码段,就像 IEntity 和 IService 这样编写一个基本接口类,声明通用方法。然后创建抽象类 BaseService,并声明自己的一组方法并分离代码。
注意 2:如果您的活动需要呈现多个模型,则最好将视图分割成片段而不是在活动中编写代码/逻辑。这样以后如果需要在视图中显示更多模型,则只需添加一个新的片段即可。
注意 3:代码的分离非常重要。体系结构中的每个组件都应该是独立的,没有依赖于逻辑。如果您有一些依赖逻辑,那么请在中间编写映射逻辑类。这将帮助您处理未来的问题。
我同意JDPeckham的观点,认为仅使用XML是不足以实现应用程序的UI部分。
然而,如果您将Activity视为视图的一部分,则实现MVC相当简单。您可以重写Application(在Activity中通过getApplication()返回),并在这里创建一个控制器,该控制器在应用程序的生命周期内都存在。
(或者您可以使用Application文档中建议的单例模式)
使用布局、资源、活动和意图创建 Android UI 是 MVC 模式的一种实现。有关详细信息,请参阅以下链接 - http://www.cs.otago.ac.nz/cosc346/labs/COSC346-lab2.2up.pdf