随笔分类 -  51 设计模式

摘要:一、定义 定义:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。对请求排队或记录请求日志,以及支持可撤消的操作。 主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不 阅读全文
posted @ 2017-09-10 11:42 心存善念 阅读(543) 评论(0) 推荐(0) 编辑
摘要:一、定义 避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。 主要解决:职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了 阅读全文
posted @ 2017-09-10 10:46 心存善念 阅读(805) 评论(0) 推荐(1) 编辑
摘要:一、定义 给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。 主要解决:对于一些固定文法构建一个解释句子的解释器。 何时使用:如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器 阅读全文
posted @ 2017-09-09 23:12 心存善念 阅读(477) 评论(0) 推荐(0) 编辑
摘要:一、定义 提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示; 主要解决:不同的方式来遍历整个整合对象。 何时使用:遍历一个聚合对象。 如何解决:把在元素之间游走的责任交给迭代器,而不是聚合对象。 二、结构 组成: 抽象容器:一般是一个接口,提供一个iterator()方法, 阅读全文
posted @ 2017-09-09 22:16 心存善念 阅读(812) 评论(0) 推荐(0) 编辑
摘要:一、定义 又称为调停者模式,定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互。 二、结构 组成: ● 抽象中介者(Mediator)角色:定义统一的接口用于各同事角色之间的通信,其中主要方法是一个(或多个)事件方法。 阅读全文
posted @ 2017-09-09 20:03 心存善念 阅读(530) 评论(0) 推荐(0) 编辑
摘要:一、定义 不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态 二、结构 备忘录模式中主要有三类角色: 发起人角色:记录当前时刻的内部状态,负责创建和恢复备忘录数据。 备忘录角色:负责存储发起人对象的内部状态,在进行恢复时提供给发起人需要的 阅读全文
posted @ 2017-09-09 17:05 心存善念 阅读(378) 评论(0) 推荐(0) 编辑
摘要:一、定义 定义:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。 访问者模式适用于数据结构相对稳定的系统, 它把数据结构和作用于数据结构之上的操作之间的耦合度降低,使得操作集合可以相对自由地改变。 数据结构的每一个节点都可以接受一个访问者的调用 阅读全文
posted @ 2017-09-08 23:43 心存善念 阅读(356) 评论(0) 推荐(0) 编辑
摘要:一、定义 定义:允许对象在内部状态改变时改变它的行为, 对象看起来好像修改了它的类。 主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。 何时使用:代码中包含大量与对象状态有关的条件语句。 如何解决:将各种具体的状态类抽象出来。 关键代码:通常命令模式的接口中只 阅读全文
posted @ 2017-09-07 23:39 心存善念 阅读(745) 评论(0) 推荐(0) 编辑
摘要:一、定义 保证一个类仅有一个实例,并提供一个访问它的全局访问点。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。 Singleton模式中的实例构造器可以设置为protected以允许子类派生。 Singleton模式一般不要支持ICloneable接口,因为这可能会导致多个 阅读全文
posted @ 2017-08-26 09:29 心存善念 阅读(503) 评论(0) 推荐(0) 编辑
摘要:一、定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式是一种比较简单的模式,也非常容易理解,实现一个接口,重写一个方法即完成了原型模式。在实际应用中,原型模式很少单独出现。经常与其他模式混用,他的原型类Prototype也常用抽象类来替代。 二、结构图 原型模式主要用于 阅读全文
posted @ 2017-08-13 00:11 心存善念 阅读(656) 评论(0) 推荐(0) 编辑
摘要:一、定义 定义了一个创建对象的接口, 但由子类决定要实例化的类是哪一个. 工厂方法让类把实例化推迟到子类 二、结构 1、抽象工厂角色:这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。2、具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的 阅读全文
posted @ 2017-08-10 00:01 心存善念 阅读(531) 评论(0) 推荐(0) 编辑
摘要:一、定义 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。 二、结构 角色 Builder(抽象建造者):它为创建一个产品Product对象的各个部件指定抽象接口,在该接口中一般声明两类方法,一类方法是buildPartX(),它们用于创建复 阅读全文
posted @ 2017-08-08 23:59 心存善念 阅读(1404) 评论(0) 推荐(1) 编辑
摘要:一、定义 给客户端提供一个接口,可以创建多个产品族中的产品对象 ,而且使用抽象工厂模式还要满足一下条件: 1)系统中有多个产品族,而系统一次只可能消费其中一族产品。 2)同属于同一个产品族的产品以其使用。 二、结构 抽象工厂模式的各个角色(和工厂方法一样): 1)抽象工厂角色: 这是工厂方法模式的核 阅读全文
posted @ 2017-08-08 00:00 心存善念 阅读(692) 评论(0) 推荐(0) 编辑
摘要:定义 迪米特法则(Law of Demeter,LoD)也称为最少知识原则(Least Knowledge Principle,LKP)。 一个对象应该对其他对象有最少的了解。通俗地讲,一个类应该对自己需要耦合或调用的类知道得最少,它的内部是如何复杂都和自己没关系,只需知道它提供的public方法, 阅读全文
posted @ 2017-08-05 00:27 心存善念 阅读(1840) 评论(0) 推荐(2) 编辑
摘要:一、定义 享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。 享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。我们将通过创建 5 个对象来画出 阅读全文
posted @ 2017-08-03 23:23 心存善念 阅读(827) 评论(1) 推荐(1) 编辑
摘要:一、定义 定义:为其他对象提供一种代理以控制对这个对象的访问 在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。 二、结构 代理模式一般会有三个角色: 抽象角色(Subject):指代理角色和真实角色对外提供的公共方法,一般为一个接口 真实角色(RealSubject):需要实现抽象 阅读全文
posted @ 2017-08-02 22:00 心存善念 阅读(521) 评论(0) 推荐(0) 编辑
摘要:一、定义 桥接模式(Bridge Pattern),将抽象部分与它的实现部分分离,使的抽象和实现都可以独立地变化。 主要解决:在多维可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。 何时使用:实现系统可能有多个角度分类,每一种角度都可能变化。 如何解决:把这种多角度分类分离出来,让它们独 阅读全文
posted @ 2017-07-30 11:59 心存善念 阅读(554) 评论(0) 推荐(0) 编辑
摘要:一、定义 将对象组合成树形结构来表现"整体-部分"层次结构。 组合能让客户以一致的方法处理个别对象以及组合对象。 主要部分可以被一致对待问题. 在使用组合模式中需要注意一点也是组合模式最关键的地方:叶子对象和组合对象实现相同的接口。这就是组合模式能够将叶子节点和对象节点进行一致处理的原因。 二、结构 阅读全文
posted @ 2017-07-30 00:13 心存善念 阅读(406) 评论(0) 推荐(0) 编辑
摘要:一、定义 外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。 外观模式不只是简化了接口,也将客户从组件的子系统中解耦。 外观和适配器可以包装许多类,但是外观强调的是简化接口,而适配器是为了将接口转换成不同的接口。 二、结构 外观角色(Facade) 阅读全文
posted @ 2017-07-26 22:49 心存善念 阅读(375) 评论(0) 推荐(0) 编辑
摘要:一、定义 适配器模式把一个类的接口,变换成客户端所期待的另一种接口,使原本因接口不匹配的两个类能够在一起工作。 二、结构 角色: Client:用户类,使用新接口Target来完成某些特定的需求。 Target:新的接口类,开放特定接口request来完成某些特定操作,与Client协作。 Adap 阅读全文
posted @ 2017-07-25 23:51 心存善念 阅读(447) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示