gof专题

《GOF设计模式》—桥接(BRIDGE)—Delphi源码示例:可移植的用户界面

 示例:可移植的用户界面 说明:   代码:   unit uWindow;   interface   uses Windows,SysUtils,Classes,Graphics;   type     TWindow = class;     TWindowImp = class;       {窗口视图}     TView = class

《GOF设计模式》—适配器(ADAPTER)—Delphi源码示例:可插入的Adapter(参数化的适配器)

 示例:可插入的Adapter(参数化的适配器) 实现: c)、参数化的适配器 用一个或多个模块对适配器进行参数化。模块构造支持无子类化的适配。一个模块可以匹配一个请求,并且适配器可以为每个请求存储一个模块。 在本例中意味着,TreeDisplay存储的一个模块用来将一个节点转化成为一个GraphicNode,另外一个模块用来存取一个节点的子节点。   例如,当对一个目录

《GOF设计模式》—适配器(ADAPTER)—Delphi源码示例:可插入的Adapter(使用代理对象)

 示例:可插入的Adapter(使用代理对象) 实现: b)、使用代理对象 在这种方法中,TreeDisplay将访问树结构的请求转发到代理对象。TreeDisplay的客户进行一些选择,并将这些选择提供给代理对象,这样客户就可以对适配加以控制,如下图所示。 例如,有一个DirectoryBrowser,它像前面一样使用TreeDisplay。DirectoryBrows

《GOF设计模式》—适配器(ADAPTER)—Delphi源码示例:可插入的Adapter(使用抽象操作)

 示例:可插入的Adapter(使用抽象操作) 说明: 当其他的类(如A)使用一个类(如C)时,如果所需的假定条件越少,这个类(如C)就更具可复用性。如果将接口匹配构建为一个类(如B),就不需要假定对其他的类可见的是一个相同的接口(如C接口)。也就是说,接口匹配使得我们可以将自己的类(如C)加入到一些现有的系统中去,而这些系统对这个类(如C)的接口可能会有所不同。 A  =〉 C

《GOF设计模式》—适配器(ADAPTER)—Delphi源码示例:绘图编辑器

 示例:绘图编辑器 说明: 有时,为复用而设计的工具箱类不能够被复用的原因仅仅是因为它的接口与专业应用领域所需要的接口不匹配。 例如,有一个绘图编辑器,这个编辑器允许用户绘制和排列基本图元(线、多边型和正 文等)、生成图片和图表。这个绘图编辑器的关键抽象是图形对象。图形对象有一个可编辑的形状,并可以绘制自身。图形对象的接口由一个称为Shape的抽象类定义。绘图编辑器为每一种图形对

《GOF设计模式》—适配器(ADAPTER)—Delphi源码示例:适配器接口

 示例:适配器接口 说明: (1)、定义 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 (2)、结构 对象匹配器依赖于对象组合,如下图所示。 目标Target:定义Client使用的与特定领域相关的接口。 适配器Adapter:对Adaptee的接口与Target接口进行适配。 被适配者A

《GOF设计模式》—抽象工厂(Abstract Factory)—Delphi源码示例:基于抽象工厂的迷宫

 示例:基于抽象工厂的迷宫   实现:     如果TMaze.Create是传递一个对象当作参数来建立rooms、walls及doors;如此你可以以不同的参数来改变rooms、walls及doors的类。  请注意MazeFactory也就是工厂方法(Factory Method)的一个集合;这是最通常实现抽象工厂模式的方式。同时请注意MazeFactory不是一个抽象类

《GOF设计模式》—原型(Prototype)—Delphi源码示例:原型接口

 示例:原型接口 说明: (1)、定义 用原型实例指定要创建对象的种类,并且通过拷贝这些原型实例创建新的同类对象。 (2)、结构 原型 Prototype:抽象原型,声明一个克隆自身的接口。 ConcretePrototype:具体原型,实现一个克隆自身的操作。 客户端 Client:让一个原型克隆自身从而创建一个新的对象。 代码: unit uProtot

《GOF设计模式》—原型(Prototype)—Delphi源码示例:浅拷贝和深拷贝

 示例:浅拷贝和深拷贝 说明: Prototype模式最困难的部分在于正确实现Clone操作。例如,当所考虑的类已经存在时就难以新增Clone操作。当类内部包括一些不支持拷贝或有循环引用的对象时,实现克隆可能会很困难。 大多数语言都对克隆对象提供了一些支持。例如,Smalltalk提供了一个copy的实现,它被所有Object的子类所继承。C++提供了一个拷贝构造器。但这些措施并不

GoF设计模式之设计模式

http://baike.baidu.com/view/1082055.htm?fr=aladdin

GoF 代理模式

代理模式的理解 代理模式,就是自己做不了,需要别人来代理,代替自己来完成。最终这个行为还是要发生,只不过不是由自己来完成,而是由别人代理完成,只是对于客户其他人来说感受不到 代理模式的作用: 当一个对象需要受到保护时,可以考虑使用代理模式去完成某个行为。需要给某个对象的功能进行增强时,可以考虑找一个代理进行增强。A 对象和 B 对象无法直接进行交互时,也可以使用代理模式来解决。 代理模式中

GoF之代理模式(静态代理+动态代理(JDK动态代理+CGLIB动态代理带有一步一步详细步骤))

1. GoF之代理模式(静态代理+动态代理(JDK动态代理+CGLIB动态代理带有一步一步详细步骤)) 文章目录 1. GoF之代理模式(静态代理+动态代理(JDK动态代理+CGLIB动态代理带有一步一步详细步骤))每博一文案2. 代理模式的理解3. 静态代理4. 动态代理4.1 JDK动态代理4.1.1 JDK动态代理中(获取到目标对象中目标方法的返回值) 4.2 CGLIB动态代理 5

设计模式与GoF

设计模式与GoF 随着设计模式领域文献增多,出现了很多设计模式的定义: 1 设计模式是对反复出现的设计问题的重复解决方案- Smalltalk手册 2 设计模式有一组描述如何实现软件开发领域中特定任务的规则所组成 Pree,1994 3 设计模式所强调的是重复出现的结构设计主题,而框架则重在细节设计和实现-Coplie和Schmit 1995 4 设计模式用以解决在特定设计情况下出现的重复

GOF四人帮的23种设计模式 --- 单例

设计模式 设计模式是GOF四人帮经过整理和收集,集合各面向对象大佬经验总结出的经典设计传奇。它能很好的帮我们解决一些特定场景的问题,使我们的系统结构更加清晰,代码更加简洁,性能更加棒,扩展性高。 单例模式 设计单例的是为了节省系统创建对象的开销。 //单例比较简单,直接看代码就懂。/*** 懒汉单例模式*/public class LazySingletonInstance {priv

【Go实现】实践GoF的23种设计模式:桥接模式

上一篇:【Go实现】实践GoF的23种设计模式:解释器模式 简单的分布式应用系统(示例代码工程):https://github.com/ruanrunxue/Practice-Design-Pattern–Go-Implementation 简介 GoF 对桥接模式(Bridge Pattern)的定义如下: Decouple an abstraction from its impl

一句话总结GoF 23种设计模式

以GoF的经典教材为例,一句话总结个人的理解。 OO回顾 四大概念 抽象:抽象为了简化问题,简单即美,相信我,人类很笨继承:为了便于扩展或改写原有的功能多态:为了便于改写原有的功能封装:组件化,便于理解、替换与复用,因此系统会更加灵活(后文提到封装XXX时,就不具体说这些优点了)类关系 依赖:非常弱的关系,A中用过B即为A依赖B继承:子类实现:接口/抽象类关联(也常看做包含) 聚合:has-a

【Go实现】实践GoF的23种设计模式:解释器模式

上一篇:【Go实现】实践GoF的23种设计模式:适配器模式 简单的分布式应用系统(示例代码工程):https://github.com/ruanrunxue/Practice-Design-Pattern–Go-Implementation 简介 解释器模式(Interpreter Pattern)应该是 GoF 的 23 种设计模式中使用频率最少的一种了,它的应用场景较为局限。 Go

GoF的23种设计模式之11种行为型模式

策略模式 定义:策略模式将定义的算法家族分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。 详细:策略模式减少了各种算法类与使用算法类之间的耦合,可以在使用算法类中消除条件语句;同时可以简化单元测试,因为每个算法都有自己的类,可以通过自己的接口单独测试。策略模式搭配反射技术,可以极大地简化代码的逻辑。   模板方法模式 定义:通过定义一个操作中的算法的

GoF的23种设计模式之7种结构型模式

装饰模式 定义:动态地给一个对象添加一些额外地职责,就增加功能而言,装饰模式比生成子类更为灵活。 详细:装饰模式把每个要装饰的功能放在单独的类中,并让这个类包装它所要装饰的对象,既可以给对象增加一些成员变量,也可以给它增加一些方法。但在装饰过程中,要注意装饰顺序,并非所有装饰功能的优先级都是相同的。例如对数据进行加密和过滤,顺序不可搞反。   代理模式 定义:为其他对象提供一种代理以

在Java 核心类库中关于GOF设计模式的例子

原文地址:http://blog.csdn.net/jiangkai528/article/details/45195915 在Java 核心类库中关于GOF设计模式的例子 问题:   我正在学习GOF的java 设计模式,我想找一些它们中鲜活的例子,在java 核心类库中有哪些好的例子呢? 回答:你可以在维基百科上获得许多设计模式概述。同时也会提到哪些是由GOF提出的。

GoF设计模式概览

以文本和思维导图的方式简明扼要的介绍了GoF的23个经典设计模式,可当成学习设计模式的一个小手册,偶尔看一下,说不定会对大师的思想精髓有新的领悟。 GoF(“四人帮”,又称Gang of Four,即Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides) 创建型模式(5个):单例模式、原型模式、建造者模式、工厂

GOF设计模式之单例模式

是什么单例子模式 单例设计模式是GoF23种设计模式中最常用的的设计模式之一,无论是第三方类库,还是我们在日常的开发中,几乎都可以看到单例的影子,单例设计模式提供了一种在多线程情况下保证实例唯一性的解决方案。   饿汉式 //final不允许被继承public final class Singleton{//实例变量private byte[] date=new byte[1024];//在

GoF与J2EE设计模式差别

GoF: 《Design Patterns: Elements of Reusable Object-Oriented Software》(即后述《设计模式》一书),由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著(Addison-Wesley,1995)。这几位作者常被称为"四人组(Gang of Four)",而这本

GRASP 、SOLID 与 GoF 设计模式

一、GRASP GRASP:通用职责分配软件设计模式(General Responsibility Assignment Software Patterns),其主要思想是基于单一职责设计软件对象。         思考软件对象设计以及大型构件的流行方式是,考虑其职责、角色和协作。这是被称为职责驱动设计(RDD)的一部分。         在RDD中,我们认为软件对象具有职责,即对其所作所为

GOF设计模式--代理模式和装饰模式

一、装饰模式 1、示例代码 // common interfacepublic interface IRunner {public void run();}//target classpublic class Runner implements IRunner {@Overridepublic void run() {System.out.println("运动员在跑步...");}}

GoF著作中未提到的设计模式(1): Archetype

GoF著作中未提到的设计模式(1):Archetype   半天也没能给这个设计模式想出一个中文名称,算了,有时候还是原版的更容易理解。   简单地说,Archetype设计模式的目的是将业务处理逻辑和具体实现分离,所以至少需要两个参与者:Decorator和Delegate, 它们都实现同一个接口,Decorator负责处理业务逻辑,而Delegate负责具体的实现,在De