第一章 Android与设计模式漫谈

1.1. 设计模式概念的提出
    模式概念最早由著名的建筑学家Christopher Alexander提出,他提出:“每个模式描述了我们生活环境中出现的各种问题,而且描述了问题的解决方案的核心。通过这种方式,你可以重复使用这些现成的解决方案。无须做重复相同的工作。”
    在软件开发中,经过无数开发人员验证、而且可以解决在特定环境下、重复出现、特定问题的解决方案就是设计模式。使用设计模式是为了可重用代码,而且模式是经过验证的代码模版, 可以达到代码更容易让人理解、也保证了代码的高可靠性。
     1995年,由著名的“四人组”,也就是大家耳熟能详的GOF(Gang of Four)合著的《设计模式——可复用面向对象软件的基础》列举了软件开发中的23种经典设计模式。时至今日,对整个软件开发行业影响深远。
1.2. 设计模式在Android开发中的作用
    设计模式是软件行业中革命性的成果,是无数开发前辈智慧的结晶,这些模式不仅是经验的积累也是简洁高效的解决方案,它覆盖了软件开发中具有典型的、有代表性的问题。而且这些模式同样适用于移动应用程序的开发,以下是它的主要作用:
    1.重用设计。在西方国家有一句谚语:Don’t Reinvent the Wheel。即“不要重复发明轮子”,在移动开发领域中,也存在着同样的道理,前人总结出的方案经验,我们需要用的时候,可以直接拿来使用,而不要重新设计。这不等同于简单的重用代码,重用的是经过验证的思想和精髓。
    2.方便开发人员交流理解。在现代软件开发过程中,我们更多时候是团队协作。每个模式都有一个特有的设计词汇,开发人员交流的时候可以直接使用这些特定词汇,如“XXX模式”,不需要大费唇舌的解释在开发过程中使用的特定模式。
    3. 编写可重用、可扩展、可维护、高效的代码。由于大多数的Android应用程序是运行在移动设备上的,而鉴于硬件配置的限制,移动设备的处理能力是有限的,所以灵活的使用设计模式能够使开发人员尽可能高效的编写出高效的代码,降低在开发过程中出现错误的可能性。
1.3. 设计模式的分类
  本书主要讲述的是GOF著作中提到的23种经典设计模式,对于这些模式可以基于两种准则进行分类。
    1.根据工作目标分类。可以分为三种:创建型 ——主要用于创建对象实例、结构型——主要用于类或对象的组合、行为型——主要用于类或对象之间的交互以及职责分配。
    2.根据范围分类。可以分为两种:类模式 ——主要用于处理类以及子类之间的关系(这些关系一般属于静态关系,在编译的时候已经确定)、对象模式——主要用于处理对象间的关系(这些关系具有动态性,在运行期是可以变化的)。
1.4. 学习设计模式的阶段
    1.了解阶段。这一阶段属于对设计模式的初级阶段,在这个阶段中,首先需要达到对开发中遇到的场景、问题进行定位,然后考虑用何种模式进行解决,并套用相应的设计模式,这个过程中,开发人员属于摸索前进的开发方式,套用正确的设计模式就是唯一的入口点。
    2.理解阶段。在实际项目的开发的过程中,经常会遭遇到与标准模式有差异的场景和问题,虽然这些场景在大体上是与标准场景相同的,但生搬硬套是不能解决的。这时就需要对标准设计模式进行相应的改动和变形,使之符合特定的场景。
    3. 精通阶段。在经过多次使用设计模式的洗礼后,对设计模式的精髓有了深刻的吸收和理解,用一句通俗的话来描述使用设计模式的水平:就像呼吸空气一样自然。这时开发人员在针对复杂的项目开发中不仅可以综合应用多种设计模式,而且可以综合考虑系统开发的体系架构、系统性能等多种因素,使之达到一个最佳的“平衡点”。
1.5. 如何学习设计模式
    1.调整心态、树立目标。学习设计模式是个逐渐熟悉的过程,不可能一蹴而就。正所谓“不积跬步,无以至千里;不积小流,无以成江海。”学习设计模式也正是如此。
    2.准确理解模式的思想。理解模式的思想不仅需要掌握模式的名称、作用、实现,而且需要掌握模式所蕴藏的思想精髓。
    3. 多实践、多应用。实践是检验真理的唯一标准,反之要想掌握真理的精髓,也需要多次实践,通过实践来加深对模式的理解。通过多次思考,实践,再思考、再实践,这样循环往复,就能感受到学习设计模式的收益与日俱增。
1.6. Android开发中使用设计模式的理念
    Android的应用程序开发采用的是MVC架构,这也是Android的官方建议。MVC是Model、View、Controller的缩写,MVC包含3个部分:
 模型层(Model):在该层主要写的是业务逻辑,就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其他部分来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。
 视图层(View):这部分即代表用户交互的界面。主要用于用户请求的输入、数据的采集以及来自模型层结果的显示。
 控制层(Controller):可以将该部分理解成一个“分发器”。它是模型与视图连接的桥梁。控制层不做任何数据处理。例如,用户点击一个链接,控制部分接受请求后, 并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。用形象的说法:控制层起的是导航作用。
    Android鼓励弱耦合和组件的重用的开发理念,这也正是设计模式所提倡的,只要开发人员用心观察Android的开发框架正式设计模式的绝佳应用环境。换句话说:正是由于Android应用的开发理念与设计模式高度重合,所以两者不仅可以能够密切结合,而且能够创造出高雅的应用软件设计架构。

你可能感兴趣的:(设计模式,mvc,android,生活,领域模型)