摘要: 1、概述冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。冒泡排序分为很多轮,每一轮都会将当前比较的最大的数放在右侧,不停地自右向左堆积。2、算法原理比较相邻的元素。如果第一个比第二... 阅读全文
posted @ 2017-02-17 16:40 晚樨 阅读(350) 评论(0) 推荐(0) 编辑
摘要: 访问者模式(Visitor)1、概述①定义表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。从定义可以看出结构对象是使用访问者模式必备条件。——GoF《Design Pattern》“对象结构”:是一个具体类,封装了若干元素。“... 阅读全文
posted @ 2017-02-10 22:04 晚樨 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 模板模式1、概述①定义模板模式使用一个抽象类将各个具体类中相同或相近的成分抽取出来,并让各个具体类继承该抽象类,共享相同或相近的成分。具体类通过继承抽象类也可以重写模板类的方法。②结构UML图:Template为模板类,它是一个抽象类,集成了ConcreteClassA、Concr... 阅读全文
posted @ 2017-02-10 10:53 晚樨 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 策略模式(Strategy)1、概述①定义《JAVA与模式》一书中是这样定义策略模式的:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。策略模式的策略是什么意思?有朋友可能会疑惑:在Java中,“策略”和“方... 阅读全文
posted @ 2017-02-09 21:54 晚樨 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 状态模式(State)1、概述①定义状态模式允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。②适用场景一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。③结构State类为状... 阅读全文
posted @ 2017-02-09 20:35 晚樨 阅读(768) 评论(0) 推荐(0) 编辑
摘要: 观察者模式(Observer)1、背景在软件开发中,当一个类发生变化,需要通知其他类,并让其他类做某些逻辑操作,观察者模式应运而生。2、概述①定义将主类与其他多个类建立一种“一对多”的通信关系,当“主类“发生某些操作时,与之建立从属关系的类作出反应。②应用场景监听某个类的运行情况被... 阅读全文
posted @ 2017-02-09 15:35 晚樨 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 备忘录模式(Memento)1、背景在日常生活中,当我们重装电脑系统时,或多或少都会将之前的系统备份,以防日后电脑发生故障时能够及时恢复。备份思想无处不在,在编码工作中亦如此。Java是面向对象的编程语言,核心的思想就是对象。我们在使用对象的过程中,可能会频繁的修改对象的相关值,若... 阅读全文
posted @ 2017-02-09 10:39 晚樨 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 中介者模式(Mediator)1、背景类与类之间会产生直接的交互,这在实际的编码中是常见的,例如,A类调用B类的方法。我们常说的“对扩展开放,对修改关闭”原则就是要防止某处修改导致处处修改的情景,因为这样极不利于后期维护。当A类直接调用B类的方法时,A类对B类产生了直接的依赖关系:... 阅读全文
posted @ 2017-02-08 22:02 晚樨 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 迭代器模式(Iterator)1、概述迭代器模式针对的对象是集合类(Tips:这里的集合类泛指存入多个元素的类),使得该集合类拥有访问该集合类所有元素的迭代器类,并通过迭代器类获取该集合类的每一个元素,而且不暴露内部元素细节。2、应用场景①应用的对象必须是可遍历的集合类②需要对集合... 阅读全文
posted @ 2017-02-08 17:06 晚樨 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 命令模式(Command)1、概述命令模式由三部分构成:Invoker(命令触发器)、Executor(命令处理器)、Responder(命令响应器)。命令模式将客户端(也就是这里的Invoker命令触发器)与服务端(Responder命令响应器)两者解耦。客户端只需要关注自己发送... 阅读全文
posted @ 2017-02-08 16:11 晚樨 阅读(172) 评论(0) 推荐(0) 编辑