Android开发有哪些常用设计模式?

Android开发有哪些常用设计模式?
如果只能选5个,你会怎么选?

阅读 5.2k
4 个回答

单例模式,代理模式,生产者消费者模型

适配器模式,单例模式,工厂模式,代理模式,模板方法

安卓的框架本身就用到了很多设计模式(所有的框架都是)。

  1. 适配器模式。ListView或RecyclerView通过Adapter将源数据展现到界面上,这里就用到了适配器模式(Adapter Model),来适配不同的源数据,比如数组、数据库。

  2. 工厂模式。对话框的构建,通常不建议直接调用构造函数去new一个对象,而是通过工厂类构建。

  3. 单例模式。跟静态类常一起对比,就是一个类只有一个对象,并且可以方便全局访问。

面向对象的六大原则

  • 单一职责原则
      所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。通俗的说,即一个类只负责一项职责,将一组相关性很高的函数、数据封装到一个类中。
  • 开闭原则
      对于扩展是开放的,这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。

  对于修改是关闭的,对模块行为进行扩展时,不必改动模块的源代码。

  通俗的说,尽量通过扩展的方式实现系统的升级维护和新功能添加,而不是通过修改已有的源代码。

  • 里氏替换原则
      使用“抽象(Abstraction)”和“多态(Polymorphism)”将设计中的静态结构改为动态结构,维持设计的封闭性。任何基类可以出现的地方,子类一定可以出现。

  在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立。在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类对象。

  • 依赖倒置原则
      高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象。

  
  程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合(各个模块之间相互传递的参数声明为抽象类型,而不是声明为具体的实现类)。

  • 接口隔离原则
      一个类对另一个类的依赖应该建立在最小的接口上。其原则是将非常庞大的、臃肿的接口拆分成更小的更具体的接口。
  • 迪米特原则
      又叫作最少知识原则,就是说一个对象应当对其他对象有尽可能少的了解。

  通俗地讲,一个类应该对自己需要耦合或调用的类知道得最少,不关心被耦合或调用的类的内部实现,只负责调用你提供的方法。

设计模式有16种,内容很多,我这里就直接发链接

  1. 单例模式 (常用)
  2. 工厂模式 (常用)
  3. 适配器模式 (常用)
  4. 责任链模式
  5. 观察者模式 (常用)
  6. 建造者模式 (常用)
  7. 备忘录模式
  8. 原型模式
  9. 策略模式
  10. 模板模式
  11. 代理模式
  12. 解释器模式
  13. 状态模式
  14. 命令模式
  15. 迭代模式
  16. 组合模式
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题