Android开发中的设计模式原理是什么?

我是一个JaveEE开发人员。 最近我加入了一个Android开发团队。 Android的结构让我困惑。 MVC设计模式似乎不适合Android开发。 那么Android开发的设计模式原则是什么? 我的意思是有任何关于如何编写干净,简单的阅读和有效的Android代码的暗示。


起初,Android的架构让我恼火,但我开始看到一种让他们疯狂的方法。 它很少被android文档解释。 我最大的抱怨一直是,你的活动像普通应用程序一样共享对象的集中数据模型很困难。 Android似乎希望我成为一名游牧民,因为我只能在我的活动之间分享原语。 在数据库中丢弃垃圾并不是一个模型,因为它不包含任何行为。 因此,大多数人的业务逻辑都以我的活动结束,很难在其他活动中共享业务逻辑。

我来找出我错过了一些关键的拼图。 Android是MVC。 但是,它与View相当。

  • 活动==控制器
  • 模型==应用程序的子类
  • 任何子类为View == View的东西
  • 有趣的是,你可以创建一个Application的子类并在你的Manifest文件中声明它,并且无论Activity被销毁或创建,Android都会创建一个这个对象的单个实例,这个实例存在于你的应用程序的长度。 这意味着您可以构建一个所有活动都可以访问的集中式数据模型。

    我看到这种方式就像一个原始的Spring容器,你可以初始化对象并解决它们之间的依赖关系。 这样,您可以将应用程序的模型部分与Activity本身分离开来。 只需让Activity对模型进行调用,然后手动回调即可接收结果,以便更新UI。

    Android的问题在于它将控制器和视图混合在一起。 例如,像TabActivity,ListActivity这样的子类意味着正在使用某个视图。 因此,交换视图是相当重要的。 此外,即使您使用“活动”,Controller也会对视图进行非常具体的假设。 他包含对TextView等UI对象的直接引用,并注册了低级别事件,如点击,键盘等。

    如果Activity可以注册更多高级别的事件,比如“登录”,“更新帐户余额”等,视图将响应一系列点击,键盘,触摸事件而分派,这样会更好。 这样,控制器就可以在您可能描述的功能而不是设计功能的级别上工作。

    我想我们最终会达到这种设计,因为我们更好地理解想出更好的工具和技术。 看起来Android可能具有可扩展性来实现这一点,但是社区需要绘制它。


    Android中的动作,视图和活动都是与Android UI一起工作的,并且是模型视图视图模型的实现,它与模型视图控制器在结构上相似(在同一族中)。

    据我所知,无法摆脱这种模式。 它可能可以完成,但您可能会失去现有模型的所有好处,并且必须重新编写自己的UI层才能使其工作。

    你可以在下面找到MVC:

  • 您可以通过分辨率/硬件等在各种XML文件中定义您的用户界面。
  • 您可以通过语言环境等在各种XML文件中定义您的资源。
  • 您可以将数据存储在SQLite中或将自定义数据存储在/ assets /文件夹中,详细了解资源和资产
  • 您可以扩展ListActivity,TabActivity等类,并通过inflaters使用XML文件
  • 您可以根据需要为模型创建任意多个类,并拥有自己的包,这将用作结构
  • 很多Utils已经为你写了。 DatabaseUtils,Html,
  • 没有单一的MVC模式可以服从。 MVC只是或多或少地陈述你不应该混合数据和视图,以便例如视图负责保存正在处理数据的数据或类直接影响视图。

    但是,尽管Android处理类和资源的方式,你有时甚至被迫遵循MVC模式。 在我看来,更复杂的是这些活动有时对于观点负责,但在同一时间充当控制者。

    如果你在xml文件中定义你的视图和布局,从res文件夹加载你的资源,并且如果你或多或少地在代码中混合这些东西,那么你无论如何都会遵循MVC模式。


    Android开发主要是GUI开发,就像Java中的Swing / AWT包含许多对GUI事件作出反应的匿名内部类。 其中一件事让我摆脱了与Swing的大量合作......但是我拥有一部Android手机,所以我会咬紧牙关,然后克服它,就像许多苹果迷们说的那样关于天线问题。 ;)

    链接地址: http://www.djcxy.com/p/67099.html

    上一篇: what's design pattern principle in the Android development?

    下一篇: Comparing two byte arrays guarding against timing attacks