我现在已经看了很多关于如何为Android编程的教程 - 我甚至开始自己创建一些程序。但是,我注意到我的程序看起来都是程序性的,而Java应该使用面向对象。我一直试图解决这个问题,但我发现了一个问题。我的程序的主要类 - 在应用程序开始时执行的程序(例如在com.testprogram.www下)似乎同时是屏幕和控制层的混合。
在我发现的所有教程中,我看到从main.xml
视图中恢复的视觉对象(例如,一个按钮 - 此恢复向我表明这将是用于治疗的'控制'层)并且只是在此之后,对象被注册到某种类型的监听器(在这种情况下为OnClickListener
- 这应该在屏幕上完成,而不是在控件中,对吧?)。
这是否意味着这样? www包下的这个主类是什么? “屏幕”图层或“控件”图层?这个班级是否适合我上面提到的那个?这样做是因为基于XML的接口无法注册Java侦听器吗?任何人都知道我有一个好地方可以参考如何使用Android的OO?
答案 0 :(得分:1)
答案 1 :(得分:0)
以下是关于Android中MVC模式的几个讨论:
http://groups.google.com/group/android-developers/browse_thread/thread/1c84f6320d007c00?pli=1
答案 2 :(得分:0)
如果您将布局的标准模式用作xml,strings.xml中的字符串,处理程序的活动以及将核心逻辑/算法/数据存储检索放在单独的类(模型类)中,那么您将很好地使用编写更好的代码的方法。
测试您的架构,
1)问问自己是否可以在与UI分离的核心逻辑/算法/数据存储(模型类)上进行单元测试。您可以毫无困难地在具有不同UI的另一个项目中重用模型类吗?
2)然后问问自己是否可以通过提供可选的strings.xml文件将应用程序移植到另一种语言。
所以演示文稿(View)主要在main.xml中。 事件和系统处理代码(Controller)主要在MyActivity.java中 算法/数据存储主要在Model.java中。
核心算法/数据存储和用户界面之间存在很大的分离。核心算法/数据存储应该不知道用户界面的细节。在UNIX中,这是INTERFACE(VC)-ENGINE(M)模式。将控制器与控制器分离只需将架构更进一步。
希望有所帮助, JAL
答案 3 :(得分:0)
使用Binding的MVVM在Android编程中非常有用。它有助于减少当前存在于基础结构中的过载的Activity结构。下面是一个可以使用的开源绑定库。