1、10.4 模式的讲解思路根据作者的不同,表述一个软件设计模式的格式,划分和名称等都会有所不同。常用的 GoF 描述模式的格式大致分为以下这些部分。 模式名:每一个模式都有自己的名字,模式的名字使得我们可以讨论我们的设计。 问题:在面向对象的系统设计过程中反复出现的特定场合,它导致我们采用某个模式。 解决方案:上述问题的解决方案,其内容给出了设计的各个组成部分,即它们之间的关系、职责划分和协作方式。 别名:一个模式可以有超过一个以上的名称,这些名称应该要在这一节注明。 动机:该模式应该利用在哪种情况下是本节提供的方案(包括问题与来龙去脉)的责任。 适用性:模式适用于哪些情况、模式的背景等。 结构
2、:这部分常用类图与互动图阐述此模式。 参与者:这部分提供一份本模式用到的类与物件清单,以及它们在设计下扮演的角色。 合作:描述在此模式下,类与物件间的互动。 影响:采用该模式对软件系统其他部分的影响,比如对系统的扩充性、可移植性的影响。影响也包括负面的影响。这部分应描述使用本模式后的结果、副作用与权衡(trade-off)。 实作:这部分应描述实现该模式、该模式的部分方案、实现该模式的可能技术、或者建议实现模式的方法。 示例:简略描绘出如何以编程语言来使用模式。 已知应用:业界已知的实作范例。 相关模式:这部分包括其他相关模式,以及与其他类似模式的不同。目前市面上也有几本介绍设计模式比较好的书
3、,总结一下可以分为如下几类。 原理式图书:这种书多从设计模式的基本原理进行讲解,是设计模式的精髓。 故事式图书:由于设计模式本身代表的是一种思想,于是通过生活故事的方式简单直白的讲解,这种方式很容易理解设计模式的思想。本书接下来将从另外一个角度进行讲解,即针对每一种设计模式,通过与该设计模式最适用的实例来进行讲解。1模式的核心思想讲解模式的精髓思想,并通过最切合的实例进行讲解,使得想到该模式就能够想到该实例,并能够由该实例延伸进行扩展。2何时使用讲解该模式适用的场景,应该在什么时候使用,使用它的优缺点,以及应该注意的要点。3 Java 中的应用讲解 Java 中体现该设计模式思想的经典 API
4、 设计,通过这种 API 的展示告诉读者该模式的适用场景。10.5 本课小结10.5.1 总结本课的知识点本课首先讲解了设计模式的基本概念及发展历史,然后详细讲解了设计模式的分类和 23 种设计模式,以及设计模式的六大原则。本节课共包含 4 个大节,每一个大节分多个小节,每一个小节都对应了一个知识点,共包含 18 个知识点,如表 10-2 所示。表 10-2 本课知识点列表大 节 内 容 小 节 内 容 对应知识点 时间安排(分钟)设计模式的概念设计模式的产生 23 种设计模式与 GoF“四人帮”设计模式不是技术而是思想构建可重用的程序了解设计模式为什么要使用设计模式10创建型模式 5 种结构
5、型模式 7 种行为型模式 11 种设计模式的分类并发型模式10线程池模式开闭原则里氏代换原则依赖倒转原则接口隔离原则迪米特法则设计模式六大原则合成符用原则30模式的核心思想何时使用模式的讲解思路Java 中的应用10合计 60培训讲师可以参照表中最后一列的参考时间控制讲解进度,即 60 分钟讲完本课内容。参加培训的学生在听完讲课后,最好再回顾一遍。对于自学者来说,相对要花费差不多 2 倍的时间来学习这些知识点。对于本章知识点的学习,除了要学习理论知识点以外,还应该注重实践操作。下面的两个小节分别从理论和实践两个方面来为你提出学习的要求。10.5.2 要掌握的关键点对于本节课的内容,我们应该掌握
6、如下的关键点。 设计模式不是技术而是思想 构建可重用的程序。 在设计模式这本书中列举并描述了 23 种设计模式,分为创建型模式、结构型模式和行为型模式。另外,近来这一清单又增加了一些类别,例如并发型模式、线程池模式、Java EE 企业技术的多层应用程序上的模式等。 GoF 中共描述了 5 种创建型模式: 工厂方法模式( Factory Method)。 抽象工厂模式( Abstract Factory)。 单例模式( Singleton)。 建造者模式( Builder)。 原型模式( Prototype)。 GoF 中共描述了 7 种结构型模式: 适配器模式( Adapter)。 装饰器模
7、式( Decorator)。 代理模式( Proxy)。 外观模式( Facade)。 桥接模式( Bridge)。 组合模式( Composite)。 享元模式( Flyweight)。 GoF 中共描述了 11 种行为型模式: 策略模式( Strategy)。 模板方法模式( Template Method)。 观察者模式( Observer)。 迭代子模式( Iterator)。 责任链模式( Chain of Responsibility)。 命令模式( Command)。 备忘录模式( Memento)。 状态模式( State)。 访问者模式( Visitor)。 中介者模式( M
8、ediator)。 解释器模式( Interpreter)。 设计模式的六大原则: 开闭原则对扩展开放,对修改关闭。 里氏代换原则:基类可以被子类替换。 合成复用原则:要依赖于抽象,不要依赖于具体。 接口隔离原则:使用多个隔离的接口,比使用单个接口好。 迪米特法则:一个软件实体应当尽可能少地与其他实体发生相互作用。 依赖倒转原则:尽量使用合成/聚合,而不是使用继承。这些知识点是本课的精华语录,不仅要记住,还应该转化为自己的东西。10.5.3 继续下一课:5 种创建型模式本课对设计模式进行了简要介绍,重点讲解了设计模式的分类和设计原则,在后文中我们将重点讲解 GoF 中提到的 23 种设计模式,将分为 3 课进行讲解。首先以农场养殖为例来讲解 5 种创建型模式。