【问题标题】:what are the design patterns used in android? [closed]android中使用的设计模式是什么? [关闭]
【发布时间】:2013-03-31 12:30:02
【问题描述】:

我知道一些在android中使用的设计模式,比如......

  1. 广播接收器使用观察者设计模式
  2. Intent 使用了一种工厂设计模式
  3. 视图使用复合设计模式
  4. 媒体框架使用外观设计模式

除了这些之外,还有其他在android中使用的设计模式吗? 欣赏你的想法

【问题讨论】:

  • 可能所有适配器(即 BaseAdapter、SimpleAdapter..etc)都使用适配器设计模式。
  • 看起来是一个相当开放的问题,不属于 SO。
  • 看一下代码,似乎反模式的使用比任何设计模式都多。是的,您提到了一些模式示例,但是大多数代码仅演示了编写软件时不应该做什么,特别是 SDK。如果我有机会写一篇关于这个的博客。
  • @Mobistry,我的观点与你的截然相反。 Android 是我使用过的最好的移动框架。该功能集显然是针对移动设备的,但我发现自己希望有桌面版本。该架构直观,文档齐全,并且观察者模式的强大使用使它感觉几乎像 Javascript 一样对工程师友好。 Intent 架构特别是一种强大而新颖的代码共享方法。我会把它归类为独特的设计模式,但我猜它最类似于广播频道观察者模式。
  • @LanceCaraccioli 举一个简单的例子,尝试继承任何 UI 类,其中所有内容都是私有的或受包保护的。您最终将重写整个内容或从谷歌复制粘贴完整的源代码。 Basic OO 表明您的类在需要时应该是可扩展的,特别是当 Android 团队不断告诉我们为我们需要的任何小的额外功能编写自己的类时。

标签: android design-patterns


【解决方案1】:

Android 在其结构中使用了很多模式。

您可以看到的第一个模式是层模式,它在 POSA 1(面向模式的软件架构 1)一书中被归类为架构模式。 Layers 模式的主要结构特征是 Layer J 的服务仅由 LayerJ+1 使用,层之间没有进一步的直接依赖关系。这种模式将解决低级和高级问题混合的问题,即高级操作依赖于低级操作。 Android是建立在一个多抽象层的堆栈之上的(更多细节请参考http://elinux.org/Android_Architecture),所以部署这个设计是为了解决它的问题。

Android 在多进程上做了很多事情,因此需要精心设计 IPC(进程间通信)机制。在 Android 中,Binder 和使用 AIDL 进行无缝通信,尽管这些进程中的服务可以用 Java、C 或 C++ 编写。 Binder 是通过 Proxy(在 Gang of Four 书中)、Broker(在 POSA 1 书中)和 Facade Wrapper 模式(参考这个链接http://www.cs.wustl.edu/~schmidt/PDF/wrapper-facade.pdf)来实现的。代理模式将对客户端隐藏通信细节,因此进程可以在本地上下文或网络上下文中统一与对象进行通信。 Broker 用于隔离与通信相关的问题。 Facade Wrapper 模式用于将 C 库 Android 中的低级函数和数据结构封装在更高的类接口中。

多线程机制也使用了很多模式。我们可以看到一个模式是用于执行长时间运行调用的命令处理器模式。

观察者模式用于跟踪系统相关状态。

….

我现在能记住的就这些了。如果您对 Android 设计模式感兴趣。您可以查看此课程:Coursera 上的https://class.coursera.org/posa-001/class/index 了解更多详情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-22
    • 2017-12-22
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    相关资源
    最近更新 更多