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

Chr*_*ris 32 android design-patterns

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

chu*_*ubs 53

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

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

  1. 活动==控制器
  2. Model ==申请子类
  3. 任何继承View == View的东西

有趣的是,你可以创建一个Application的子类并在你的Manifest文件中声明它,Android将创建这个对象的单个实例,无论Activity被销毁或创建什么,它都会占用应用程序的长度.这意味着您可以在那里构建一个所有活动都可以访问的集中数据模型.

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

Android的问题在于它混合了控制器和视图.例如,像TabActivity,ListActivity这样的子类意味着使用了某个视图.因此,交换视图非常复杂.即使您使用Activity,Controller也会对视图的内容做出非常具体的假设.他包含对TextView等UI对象的直接引用.它还注册了低级事件,如点击,键盘等.

如果活动可以注册更多高级别的活动,例如"登录","更新帐户余额"等,视图会响应一系列点击,键盘,触摸事件而调度,这样会更好.这样,控制器就可以在您可能描述的功能级别而不是设计功能上工作.

我认为我们最终会达到这种类型的设计,因为我们更好地理解了更好的工具和技术.似乎Android可能具有实现这一目标的可扩展性,但是由社区来制定它.

  • 模型对活动"本地"的想法是UI设计的副产品.如果通过添加功能或改进设计进行更改,您可以非常轻松地在视图之间共享数据.因此,将诸如付款和发票之类的数据模型绑定到活动并不是一种灵活的设计方式,因为它会将您锁定在UI设计中.那么如何将这些内容分开,以便您可以更轻松地修改UI而无需重写大量管道?使用模型,控制器和视图之间的适当分离,这是使用应用程序的子类可以帮助您做到这一点. (2认同)

Pen*_*m10 18

Android中的操作,视图和活动是使用Android UI的方式,是模型 - 视图 - 视图模型模式的实现,它在结构上与模型视图控制器相似(在同一系列中).

据我所知,没有办法打破这种模式.它可能已经完成,但您可能会失去现有模型的所有好处,并且必须重写您自己的UI层才能使其工作.

你可以在下面找到MVC:

  • 您可以通过分辨率/硬件等在各种XML文件中定义用户界面.
  • 您可以通过区域设置等在各种XML文件中定义资源.
  • 您将数据存储在SQLite中或您的自定义数据存储在/ assets /文件夹中,阅读有关资源和资产的更多信息
  • 您延长clases就像ListActivity,TabActivity并利用XML文件的inflaters
  • 您可以根据需要为模型创建任意数量的类,并拥有自己的包,它们将充当结构
  • 很多Utils已经为你编写过了.DatabaseUtils,Html,

没有单一的MVC模式你可以遵守.MVC或多或少表明你不应该混合数据和视图,因此例如视图负责保存数据或处理数据的类直接影响视图.

但是,Android处理类和资源的方式,有时甚至被迫遵循MVC模式.在我看来,更复杂的是活动,它们有时对视图负责,但在同一时间充当控制者.

如果您在xml文件中定义视图和布局,请从res文件夹加载资源,如果您避免或多或少地在代码中混合这些内容,那么您无论如何都要遵循MVC模式.