摘要:
1 概述 这篇文章是对GoF23种设计模式+1种非GoF模式的合集,由笔者自己的笔记整理而来,每个模式都详细描述了步骤,角色等,以及使用Java实现的具体的例子,下面是目录: 基础 设计模式概述 UML基础 创建型模式 单例模式 简单工厂模式(非GoF模式) 工厂方法模式 抽象工厂模式 原型模式 建 阅读全文
摘要:
1 概述 1.1 引言 患者就医时,医生开具处方后通常由药房工作人员准备药品,由划价人员根据药品数量计算总价,这里,可以将处方看作是一个药品信息的集合,里面包含了一种或多种不同类型的药品信息,不同类型的工作人员在操作同一个药品信息集合时将提供不同的处理方式,而且可能还会增加新类型的工作人员来操作处方 阅读全文
摘要:
1 概述 1.1 引言 模板方法模式是结构最简单的行为型设计模型,在其结构中只存在父类与之类之间的继承关系,通过使用模板方法模式,可以将一些复杂流程的实现步骤封装在一系列基本方法中,在抽象父类提供一个称之为模板方法的方法来定义这些基本方法的执行次序,而通过其子类来覆盖某些步骤,从而使得相同的算法框架 阅读全文
摘要:
1 概述 1.1 引言 在外出旅游时,很多时候的出行方式都不止一条,通常根据实际情况,比如目的地,预算,旅游时间等确定最适合的出行方式。在软件开发中,也常常会遇到类似的情况,实现某一个功能有多种途径,每一条途径对应一个算法,这时可以使用一种叫做策略模式的设计模式来进行设计。在策略模式中,可以定义一些 阅读全文
摘要:
1 概述 1.1 引言 状态模式用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。当系统中的某个对象存在多个状态,这些状态之间可以进行转换,而且对象在不同状态下行为不相同时可以使用状态模式。 状态模式将一个对象的状态从该对象中分离出来,封装到专门的状态类中,使得对象状态可以灵活变化,对于 阅读全文
摘要:
1 概述 1.1 引言 观察者模式使用频率很高,用于建立一种对象之间的依赖关系,当一个对象发生改变时自动通知其他对象,其他对象将做出相应反应。在观察者模式中,发生改变的对象叫做观察目标,也叫被观察者,而被通知的对象叫做观察者。 一个观察目标可以对应多个观察者,而且这些观察者之间没有任何相互关联,可以 阅读全文
摘要:
1 概述 1.1 引言 在手机上玩象棋时,往往会提供一个悔棋的功能,实际上,悔棋就是恢复到某个历史状态,很多软件中称之为撤销,实现撤销时,需要先保存历史状态,这样撤销时,取出某个历史状态并覆盖当前状态。备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或 阅读全文
摘要:
1 概述 1.1 引言 如果一个系统中对象之间的联系呈现为网状结构,存在大量的多对多联系,将导致系统非常复杂,比如,一个GUI窗口中,通过一个按钮更新了文本框,也更新了组合框,更新组合框的同时反过来需要更新文本框以及按钮。 这些对象既会影响别的对象,也会被别的对象所影响,这些对象称为同事对象,它们之 阅读全文
摘要:
1 概述 1.1 引言 在软件开发中,有一些类可以存储多个成员对象(元素),这些类通常称为聚合类,对应的对象称为聚合对象。聚合对象拥有两个职责,一个是存储数据,一个是遍历数据,前者是聚合对象的基本职责,后者是可以变化以及分离的,因此,可以将遍历数据的行为从聚合对象中分离出来,封装在一个被称之为“迭代 阅读全文
摘要:
1 概述 1.1 引言 解释器模式是一种使用频率较低但是学习难度较大的设计模式,用于描述如何使用面向对象语言构成一个简单的语言解释器。某些情况下可能需要自定义一个新语言,这种语言具有自己的文法规则,这时可以使用解释器模式进行设计,比如模拟机器人的控制程序,每一条指令对应一个动作,通过解释输入的指令来 阅读全文