自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 行为型模式之访问者模式(Visitor)

1. 意图表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。2. 动机考虑一个编译器,它将源程序表示为一个抽象语法树。该编译器需在抽象语法树上实施某些操作以进行“静态语义”分析,例如检查是否所有的变量都已经被定义了。它也需要生成代码。因此它可能要定义许多操作以进行类型检查、代码优化、流程分析,检查变量是否在使用前被赋初值,等等。此

2017-05-17 17:17:00 455

原创 行为型模式之模板方法模式(TemplateMethod)

1. 意图定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Te m p l a t e M e t h o d使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。2. 动机在开发一个支持多种压缩类型文件的解压缩且制作成pdf的一个应用过程中,对架构来说我们需要支持多种压缩文件类型,但却有固定的操作顺序(先解压缩,在读取里面的文件分析、制作pdf)。我们抽取他们

2017-05-17 16:24:10 452

原创 行为型模式之策略模式(Strategy)

1. 意图定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。2. 动机有许多算法可对一个正文流进行分行。将这些算法硬编进使用它们的类中是不可取的,其原因如下:• 需要换行功能的客户程序如果直接包含换行算法代码的话将会变得复杂,这使得客户程序庞大并且难以维护, 尤其当其需要支持多种换行算法时问题会更加严重。• 不同的时候需要

2017-05-17 15:42:07 430

原创 行为型模式之状态模式(State)

1. 意图允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。2. 动机考虑一个表示网络连接的类T C P C o n n e c t i o n。一个T C P C o n n e c t i o n对象的状态处于若干不同状态之一: 连接已建立( E s t a b l i s h e d)、正在监听( L i s t e n i n g )、连接已关闭( C l

2017-05-17 15:05:53 514

原创 行为型模式之观察者模式(Observer)

1. 意图定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。2. 动机将一个系统分割成一系列相互协作的类有一个常见的副作用:需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,因为这样降低了它们的可重用性。O b s e r v e r模式描述了如何建立这种关系。这一模式中的关键对象是目标( s u b j

2017-05-17 10:04:51 388

原创 行为型模式之备忘录模式(Memento)

1. 意图在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。2. 动机有时有必要记录一个对象的内部状态。为了允许用户取消不确定的操作或从错误中恢复过来,需要实现检查点和取消机制, 而要实现这些机制,你必须事先将状态信息保存在某处,这样才能将对象恢复到它们先前的状态。但是对象通常封装了其部分或所有的状态信息, 使得其状态

2017-05-16 10:42:18 387

原创 行为型模式之中介者模式(Mediator)

1. 意图用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。2. 动机面向对象设计鼓励将行为分布到各个对象中。这种分布可能会导致对象间有许多连接。在最坏的情况下,每一个对象都知道其他所有对象。虽然将一个系统分割成许多对象通常可以增强可复用性, 但是对象间相互连接的激增又会降低其可复用性。大量的相互连接使得一个对

2017-05-15 16:53:47 412

原创 行为型模式之迭代器模式(Iterator)

1. 意图提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。2. 动机一个聚合对象, 如列表(list), 应该提供一种方法来让别人可以访问它的元素,而又不需暴露它的内部结构. 此外,针对不同的需要,可能要以不同的方式遍历这个列表。但是即使可以预见到所需的那些遍历操作,你可能也不希望列表的接口中充斥着各种不同遍历的操作。有时还可能需要在同一个表列上同时进行多个

2017-05-15 15:57:55 497

原创 行为型模式之解释器模式(Interpreter)

1. 意图给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。2. 动机如果一种特定类型的问题发生的频率足够高, 那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器, 该解释器通过解释这些句子来解决该问题。3.结构①AbstractExpression:定义解释器的接口,约定解释器的解释操作。其中

2017-05-15 11:38:10 421

原创 行为型模式之命令模式(command)

1. 意图将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。2. 动机有时必须向某对象提交请求,但并不知道关于被请求的操作或请求的接受者的任何信息。例如,用户界面工具箱包括按钮和菜单这样的对象,它们执行请求响应用户输入。但工具箱不能显式的在按钮或菜单中实现该请求,因为只有使用工具箱的应用知道该由哪个对象做哪个操作。而工具箱

2017-05-15 09:34:46 388

原创 行为型模式之职责链模式(Chain of responsibility)

1. 意图使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。2. 动机考虑一个图形用户界面中的上下文有关的帮助机制。用户在界面的任一部分上点击就可以得到帮助信息,所提供的帮助依赖于点击的是界面的哪一部分以及其上下文。例如,对话框中的按钮的帮助信息就可能和主窗口中类似的按钮不同。如果对那一部分界

2017-05-13 10:56:35 613

原创 结构型模式之代理模式(Proxy)

1. 意图为其他对象提供一种代理以控制对这个对象的访问。2. 动机因为某个对象消耗太多资源,而且你的代码并不是每个逻辑路径都需要此对象, 你曾有过延迟创建对象的想法吗 ( if和else就是不同的两条逻辑路径) ? 你有想过限制访问某个对象,也就是说,提供一组方法给普通用户,特别方法给管理员用户?以上两种需求都非常类似,并且都需要解决一个更大的问题:你如何提供一致的接口给某个对象让

2017-05-11 10:08:11 468

原创 结构型模式之享元模式(FlyWeight)

1. 意图运用共享技术有效地支持大量细粒度的对象。2. 动机有些应用程序得益于在其整个设计过程中采用对象技术,但简单化的实现代价极大。例如,大多数文档编辑器的实现都有文本格式化和编辑功能,这些功能在一定程度上是模块化的。面向对象的文档编辑器通常使用对象来表示嵌入的成分,例如表格和图形。尽管用对象来表示文档中的每个字符会极大地提高应用程序的灵活性,但是这些编辑器通常并不这样做。字符和嵌入

2017-05-10 20:25:18 355

原创 结构型模式之外观模式(Facade)

1. 意图为子系统中的一组接口提供一个一致的界面, F a c a d e模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。2. 动机将一个系统划分成为若干个子系统有利于降低系统的复杂性。一个常见的设计目标是使子系统间的通信和相互依赖关系达到最小。达到该目标的途径之一是就是引入一个外观(f a c a d e)对象,它为子系统中较一般的设施提供了一个单一而简单的界面。

2017-05-08 11:01:39 514

原创 结构型模式之装饰(Decorator)

1. 意图动态地给一个对象添加一些额外的职责。就增加功能来说, D e c o r a t o r模式相比生成子类更为灵活。2. 动机有时我们希望给某个对象而不是整个类添加一些功能。例如,一个图形用户界面工具箱允许你对任意一个用户界面组件添加一些特性,例如边框,或是一些行为,例如窗口滚动。使用继承机制是添加功能的一种有效途径,从其他类继承过来的边框特性可以被多个子类的实例所使用。但这种

2017-05-05 17:23:22 427

原创 结构型模式之组合模式(Composite)

1. 意图将对象组合成树形结构以表示“部分-整体”的层次结构。C o m p o s i t e使得用户对单个对象和组合对象的使用具有一致性。2. 动机在绘图编辑器和图形捕捉系统这样的图形应用程序中,用户可以使用简单的组件创建复杂的图表。用户可以组合多个简单组件以形成一些较大的组件,这些组件又可以组合成更大的组件。一个简单的实现方法是为Te x t和L i n e这样的图元定义一些类,

2017-05-05 11:20:11 491

原创 结构型模式之桥接模式(Bridge)

1. 意图将抽象部分与它的实现部分分离,使它们都可以独立地变化。2. 动机当一个抽象可能有多个实现时,通常用继承来协调它们。抽象类定义对该抽象的接口,而具体的子类则用不同方式加以实现。但是此方法有时不够灵活。继承机制将抽象部分与它的实现部分固定在一起,使得难以对抽象部分和实现部分独立地进行修改、扩充和重用。3. 举例就拿汽车在路上行驶的来说。即有小汽车又有公共汽车,它们

2017-05-05 10:08:00 478

原创 结构型模式之适配器模式(Adapter)

1. 意图将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。2. 动机有时,为复用而设计的工具箱类不能够被复用的原因仅仅是因为它的接口与专业应用领域所需要的接口不匹配。分为两种,一种是类适配器,另外一种是对象适配器。3. 实例Student类表示学生群体,Teacher类表示教师群体,学生可以进行学习的行为,

2017-05-04 17:10:44 336

转载 创建型模式之原型模式

原文链接:点击打开链接功能:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。原型模式其实就是从一个对象创建另外一个可定制的对象,而且不需知道任何创建的细节。优点:     一般在初始化的信息不发生变化的情况下,克隆是最好的办法,既隐藏了对象创建细节,又提高性能。其等于是不用重新初始化对象,而是动态地获得对象运行时的状态。缺点:  模

2017-05-04 15:22:32 318

转载 创建型模式之单例模式

原文链接:点击打开链接功能:保证一个类仅有一个实例,并提供一个访问它的全局访问点。优点: 提供了对唯一实例的受控访问。因为单例类封装了它的唯一实例,所以它可以严格控制客户怎样以及何时访问它,并为设计及开发团队提供了共享的概念。由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象,单例模式无疑可以提高系统的性能。允许可变数目的实例。我们可

2017-05-04 14:47:23 520

转载 创建型模式之建造者模式

原文链接:点击打开链接功能:将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。优点: 客户端不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象。每一个具体建造者都独立,因此可以方便地替换具体建造者或增加新的具体建造者, 用户使用不同的具体建造者即可得到不同的产品对象 。可以更加精细地控制产品的创建过程

2017-05-04 10:44:24 511

转载 创建型模式之抽象工厂模式

原文链接:点击打开链接功能:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。优点: 抽象工厂模式隔离了具体类的生成,使得客户并不需要知道什么被创建。由于这种隔离,更换一个具体工厂就变得容易。所有的具体工厂都实现了抽象工厂中定义的那些公共接口,因此只需改变具体工厂的实例,就可以在某种程度上改变整个软件系统的行为。另外,此模式可以实现高内聚低耦合的设计目

2017-05-03 10:48:56 414

转载 创建型模式之工厂方法模式

功能:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。优点: 向客户隐藏了哪种具体产品将被实例化的细节,用户只需要关心所需产品对应的工厂,无须关心创建细节,无须知道具体产品类的类名。基于工厂角色和产品角色的多态性设计是工厂方法模式的关键。它能够使工厂可以自主确定创建何种产品对象,而如何创建这个对象的细节则完全封装在具体工厂内部。工厂方法模

2017-05-03 10:05:27 431

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除