摘要: 定义 在很多情况下,一个对象的行为取决于它的一个或多个变化的属性,这些属性我们称之为状态,这个对象称之为状态对象。对于状态对象而已,它的行为依赖于它的状态,比如你要预订房间,那么只有当该房间为空闲时你才能预订,你想入住该房间也只有当你预订了该房间或者该房间为空闲时。对于这样的一个对象,当它在于外部事 阅读全文
posted @ 2019-09-25 10:12 MarkLogZhu 阅读(180) 评论(0) 推荐(0)
摘要: 定义 访问者模式就是表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式适用于数据结构相对稳定的系统。 角色 Vistor: 抽象访问者。为该对象结构中的ConcreteElement的每一个类声明的一个操作。 ConcreteVis 阅读全文
posted @ 2019-09-25 10:11 MarkLogZhu 阅读(204) 评论(0) 推荐(0)
摘要: 定义 职责链模式就是避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。 在职责链模式中我们可以随时随地的增加或者更改一个处理者,甚至可以更改处理者的顺序,增加了系统的灵活性。处理灵活性是增加了,但是有时候可能会导致一个 阅读全文
posted @ 2019-09-25 10:08 MarkLogZhu 阅读(233) 评论(0) 推荐(0)
摘要: 定义 中介者模式就是用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 角色: Mediator: 抽象中介者。定义了同事对象到中介者对象之间的接口。 ConcreteMediator: 具体中介者。实现抽象中介者的方法,它 阅读全文
posted @ 2019-09-25 10:06 MarkLogZhu 阅读(213) 评论(0) 推荐(0)
摘要: 定义 将请求封装成对象,以便使用不同的请求、日志、队列等来参数化其他对象。命令模式也支持撤销操作。 角色 Command:定义命令的统一接口 ConcreteCommand:Command接口的实现者,用来执行具体的命令,某些情况下可以直接用来充当Receiver。 Receiver:命令的实际执行 阅读全文
posted @ 2019-09-25 10:05 MarkLogZhu 阅读(191) 评论(0) 推荐(0)
摘要: 定义 备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。 角色: Originator: 原发器。负责创建一个备忘录,用以记录当前对象的内部状态,通过也可以使用它来利用备忘录恢复内部状态。同时原发器还可以根据需要决定Me 阅读全文
posted @ 2019-09-25 10:03 MarkLogZhu 阅读(194) 评论(0) 推荐(0)
摘要: 定义 观察者模式又称为发布 订阅模式。定义了对象之间的一对多依赖关系,当一个对象改变状态时,它的所有依赖者都会收到通知并且自动更新。 在这里,发生改变的对象称之为观察目标,而被通知的对象称之为观察者。一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,所以么可以根据需要增加和删除观察者, 阅读全文
posted @ 2019-09-25 10:02 MarkLogZhu 阅读(166) 评论(0) 推荐(0)
摘要: 定义 解释器模式(Interpreter),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 角色 AbstractExpression: 抽象表达式。声明一个抽象的解释操作,该接口为抽象语法树中所有的节点共享。 TerminalExpression: 阅读全文
posted @ 2019-09-25 10:00 MarkLogZhu 阅读(170) 评论(0) 推荐(0)
摘要: 定义 策略模式就是定义了算法族,将其分别封装起来,让他们之前可以互相转换,策略模式让该算法的变化独立于使用算法的客户。 在软件系统中有很多种方法可以实现同一个功能,比如排序算法它有冒泡排序、选择排序、快速排序、插入排序等等。这里我们有一种硬编码方法,就是将所有的排序算法全部写在一个类中,每一种算法的 阅读全文
posted @ 2019-09-25 09:59 MarkLogZhu 阅读(182) 评论(0) 推荐(0)
摘要: 定义 所谓迭代器模式就是提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示。在实际的开发过程中,我们可能需要针对不同的需求,可能需要以不同的方式来遍历整个整合对象,但是我们不希望在聚合对象的抽象接口层中充斥着各种不同的便利操作。这个时候我们就需要这样一种东西,它应该具备如下三个功能 阅读全文
posted @ 2019-09-25 09:57 MarkLogZhu 阅读(179) 评论(0) 推荐(0)
摘要: 定义 所谓模板方法模式就是在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 模板方法模式是基于继承的代码复用技术的。在模板方法模式中,我们可以将相同部分的代码放在父类中,而将不同的代码放入不同的子类中。也就是说我们需要 阅读全文
posted @ 2019-09-25 09:55 MarkLogZhu 阅读(193) 评论(0) 推荐(0)
摘要: 定义 代理模式就是给一个对象提供一个代理,并由代理对象控制对原对象的引用。在代理模式中,“第三者”代理主要是起到一个中介的作用,它连接客户端和目标对象。 角色 Subject: 抽象角色。声明真实对象和代理对象的共同接口。 Proxy: 代理角色。代理对象与真实对象实现相同的接口,所以它能够在任何时 阅读全文
posted @ 2019-09-25 09:52 MarkLogZhu 阅读(212) 评论(0) 推荐(0)
摘要: 定义 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 桥接模式将继承关系转化成关联关系,它降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量。 包含角色: Abstract 阅读全文
posted @ 2019-09-25 09:50 MarkLogZhu 阅读(214) 评论(0) 推荐(0)
摘要: 定义 组合模式又叫部分 整体模式,组合多个对象形成树形结构以表示“整体 部分”的结构层次。 组合模式对单个对象(叶子对象)和组合对象(组合对象)具有一致性,它将对象组织到树结构中,可以用来描述整体与部分的关系。同时它也模糊了简单元素(叶子对象)和复杂元素(容器对象)的概念,使得客户能够像处理简单元素 阅读全文
posted @ 2019-09-25 09:48 MarkLogZhu 阅读(203) 评论(0) 推荐(0)
摘要: 定义 享元模式就是运行共享技术有效地支持大量细粒度对象的复用。系统使用少量对象,而且这些都比较相似,状态变化小,可以实现对象的多次复用。享元的目的是为了减少不会要额内存消耗,将多个对同一对象的访问集中起来,不必为每个访问者创建一个单独的对象,以此来降低内存的消耗。 享元模式有点类似于单例模式,都是只 阅读全文
posted @ 2019-09-25 09:45 MarkLogZhu 阅读(212) 评论(0) 推荐(0)
摘要: 定义 将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。 比如笔记本的电源(也叫电源适配器)就使用了适配器模式。将220V的交流电转换为笔记本电脑所需要的12V 适配器模式角色 适配器模式包含以下三个角色: Target(目标抽象类):目标抽象类定义客户所需的接口 阅读全文
posted @ 2019-09-25 09:44 MarkLogZhu 阅读(355) 评论(0) 推荐(0)
摘要: 定义 装饰者模式又叫包装(Wrapper)模式。装饰者模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 装饰者模式动态地将责任附加到对象身上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。 在装饰模式中的角色: 抽象构件(Component)角色:给出一个抽象接口,以规范准备 阅读全文
posted @ 2019-09-25 09:43 MarkLogZhu 阅读(232) 评论(0) 推荐(0)