自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 访问者模式(Visitor Pattern)

目的:在不改变一个已存在的类的层次结构的情况下,为这个层次结构中的某些类定义一个新的操作,这个新的操作作用于(操作)已存在的类对象,也即新的操作需要访问被作用的对象。应用范围: 一个对象层次结构中包含很多类对象,它们有不同的接口,而你想对这些对象实施一些依赖于其具体类的操作。例如访问类一般访问的是类层次中最低层的类(具体类,其父类假设为抽象类)对象。需要对一个对象结构中的对象进行很

2006-10-22 18:35:00 1434

原创 迭代器模式(Iterator Pattern)

面向对象的设计,要求为对象做到好的职责分离,每个对象只包括最少的职责,这样其与其他对象的联系也越少,降低了对象间的耦合度。职责分离需要对对象被分离的职责进行封装,并以抽象的方式建立起彼此之间的关系。在设计中,我们往往将这些可能变化的对象抽象为接口和抽象类,从而将原来的具体依赖改变为抽象依赖。迭代器模式就是分离集合对象的职责的方法,其将集合对象存储数据(存储数据的类型、存储空间的大小、存储空间的

2006-10-22 16:55:00 786

原创 装饰模式(Decorator Pattern)

装饰模式通过一个类层次,这个类层次中的类都有一致的接口,而且这些类中的任一个都可以与其中的其他的类进行组合而产生相同行为的不同结果。从而达到扩展的目的。  如上图所示,通过实现一致的接口,ErrorLog和SiginLog有了一致的行为Writer()。将SiginLog的对象做为参数创建一个ErrorLog,在调用:ErrorLog.Writer()时,就可以在记录登录日志的同时记录错误

2006-10-22 14:54:00 541

原创 解释器模式(Interpreter Pattern)

解释器模式对给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。   解释器模式需要创建一个类层次结构,在这个类层次结构中,每个类实现(或解释)一个公共操作。  例如:如果你需要对一个对象进行if...else操作,如果必要,你可以为其定义一个IfCommand对象来进行操作;如果是将一个对象从这儿移动到那儿,也就可以定义一个CarryCommand类来

2006-10-22 09:41:00 955

原创 命令模式(Command Pattern)

   命令模式可以在一个对象中封装一个请求,这样,我们可以把方法调用作为对象进行管理,并在满足时序关系或者满足某些条件的情况下,传递这些对象,并且调用这些对象。[Steve.Metsker《C#设计模式》]  将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。[GOF 《设计模式》]  命令模式根本目的在于将命令的请求和命令的响应现实

2006-10-21 23:58:00 541

原创 策略模式(Strategy Pattern)

当一个对象的某个操作需要根据当前的条件进行选择而产生不同的行为时,往往需要多个if...else语句进行选择,如果将所有实现这些行为的语句放在一起实现的语,语句将会非常复杂,策略模式即用于简化这种复杂性。  策略模式将不能的行为即策略,使用不同的对应的类来实现,而这些类将向使用者提供一致接口。如图所示,客户类StrategyClient可以通过设置不同的IStrategy接口的不同实现,从

2006-10-21 21:31:00 460

原创 状态模式(State Pattern)

  状态模式将一个对象的不同状态使用一组对应的对象来表示,并将与状态有关的操作封装到状态对象的相应操作中。  使用状态对象的对象只需要直接执行当前状态对象的相应操作,由状态对象来实现到下一个状态对象的转换,并根据自身所表示的状态执行相应操作。

2006-10-21 15:19:00 505

原创 模板方法模式(Template Mothod Pattern)

   模板方法模式的目的在于:在一个方法中定义一个算法,但是,把算法的某些步骤进行抽象。这样,我们可以把这些步骤从方法中称出,并在方法外部定义这些步骤;也可用一个接口定义这些步骤,从而使类可以提供这些步骤。  .Net框架中的ArrayList的Sort()方法,其中所进行的二个对象之间的比较就是要求所比较的对象实现IComparable或IComparer接口,以调用其中的CompareTo

2006-10-21 11:55:00 530

原创 备忘录模式(Memento Pattern)

  备忘录模式用一个状态管理器对象来管理另一个对象的状态变化过程,从而可以将被管理对象的从当前状态恢复到前一状态。  状态管理器通常使用一个栈来保存已有的状态。  状态可以保存在内存临时使用,也可保存在文件中持久保存。  备忘录模式多用于撤消操作中。

2006-10-18 22:20:00 438

原创 原型模式(Prototype Pattern)

  原型模式使用已有的对象复制生成一个新的对象。  拷贝对象一般都包括了原有对象的某些状态信息。我们可以利用这个特点完成某些工作,特别是当对象的“类”仅仅在属性上具有区别,而行为并没有区别的时候。  可以使用一个原型管理器来动态的添加和删除原型,以用于其他使用的地方。 

2006-10-17 21:11:00 473

原创 抽象工厂模式(Abstract Factory Pattern)

   抽象工厂模式用于创建不同的几组不同的对象中的一组。  如图所示,客户程序可以使用IFactory接口生成ProductPackage1中的一组对象,也可以使用ProductPackage2中的一组对象。  而Factory1和Factory2的实现使用工厂方法模式,在一个工厂类中创建所有的一组对象,包括用一个静态方法创建其自身。 

2006-10-16 21:11:00 429

原创 工厂方法模式(Factory Method Pattern)

  如果需要使用一个对象的客户并不知道应该对几个类中的哪个类进行初始化,或者被初始化的类是经常发生变化的,就可以使用工厂方法模式来创建所需要的类。   如图所示,Factory对象可以根据情况创建Product1或Product2对象供FactoryClient对象使用,而FactoryClient对象不需要知道Factory所创建的对象到底是对哪个类的实例化。  而Factory对象

2006-10-15 22:40:00 466

原创 生成器/建造者模式(Builder Pattern)

  生成器模式的目的在于分离一个对象的复杂的构造过程,将其复杂的构造过程独立为一个生成器。  生成器模式由于其构造过程是独立的,所以其构造过程也是易于变化的,而被生成的对象则可以保持相对的稳定。同时,在构造的过程中也可以保证被生成的对象是有效的,也可以支持逐步的构造对象。 以下情况应当使用建造者模式:1、需要生成的产品对象有复杂的内部结构。2、需要生成的产品对象的属性相互依赖,建造者模

2006-10-15 21:41:00 472

原创 享元模式(Flyweight Pattern)

   享元模式用于管理大量细粒度的对象,当系统中存在大量细粒度的对象,而这些对象之中有许多对象其内容是完全相同的,就可以用一个共享的对象来代代替这些对象,共享的对象称之为享元对象。  享元对象必须是不可改变的。为了满足这个特征,可以提取共享类的不可改变部分。为了保证对享元对象进行共享,可以使用一个享元工厂,客户必须使用享元工厂查找享元。为了控制其他开发人员访问,可以利用访问控制修饰符,但使用嵌

2006-10-15 12:06:00 388

原创 职责链模式(Chain Of Responsibility Pattern)

  当一个对象向多个对象发送相同的信息时,就需要一种策略来确定由哪个对象对所发送的信息进行处理,而这样的处理对象也只能有一个。使用case语句或if语句的方法会给程序的维护带来很大难度,这就需要职责链模式来完成。职责链模式将发送对象和接收对象进行了解耦,以更好的应对变化。  职责链模式将接收对象形成一个链,发送对象将信息发送给接收对象链中的一个对象,这时,信息就沿着对象链向下传送,直到有一个对

2006-10-15 11:22:00 494

原创 代理模式(Proxy Pattern)

  代理模式的目的在于为其他对象提供一个代理,从而完成对其他对象的访问。原因是有时候对其他对象的访问过于复杂,或者需要对其他对象的访问进行控制,或者是优化的需要。  代理模式所提供的代理类在使用上与其所代理的对象应该是完全一致的。代理对象在其方法中调用被代理对象的方法来完成实际的功能。如下图所示,Client对接口的使用时,其实现使用的是SubjectProxy代理类的实现。   

2006-10-15 09:44:00 700

原创 中介者模式(Mediator Pattern)

  中介者模式将二个或多个对象之间的交互提取出来封装到一个对象中,则这个中介对象来管理交互,同时也解除了这些相关对象的耦合。  在GUI程序中,可以将事件处理函数独立形成一个类,而成为中介者。此一点实现时类似于观察者模式。  中介者模式可以用于管理对象间的完整性关系,就如同一张一对多的二维关系表。  在MVC(Model View Controller)中,其控制器即为一个中介者对象。

2006-10-14 10:53:00 457

原创 观察者模式(Observer Pattern)

   观察者模式的目的在于在对象之间定义一个一对多的依赖关系,从而当一个对象状态发生改变时,所有依赖于这个对象的其他对象都能够得到通知,并对上述改变做出反应。  在.Net环境下,可以使用委托和事件来实现观察者模式。.Net框架在GUI部分大量使用了观察者模式。  在.Net环境下,对象的改变通过已注册的事件进行通知,而在一般化的实现中,对被通知对象(观察者)的注册使用将观察者添加到变化的

2006-10-12 22:41:00 387

转载 单件模式(Singleton Pattern)

原文地址:http://terrylee.cnblogs.com/archive/2005/12/09/293509.htmlTerrylee,2005年12月07日概述 Singleton模式要求一个类有且仅有一个实例,并且提供了一个全局的访问点。这就提出了一个问题:如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?客户程序在调用某一个类时,它是不会考虑这个类是否只能有一个

2006-10-11 21:33:00 469

原创 桥接模式(Bridge Pattern)

  桥接模式的目的在于把一个抽象与其抽象操作的实现进行分离,这样,抽象与其抽象操作的实现可以独立进行改变。   抽象是一个类,这个类仅包括其所有子类都使用同一实现的属性和操作。而抽象操作是抽象所提供给客户的功能,这些功能有着不同的实现。  桥接模式应用于当类型向二个或多个维度进行扩展时。抽象的扩展和抽象操作的扩展形成了二个维度的扩展。(此图摘自Steve的《C#设计模式》)  

2006-10-09 22:03:00 542

原创 合成模式(Composite Pattern)

  合成模式让客户程序反单个基本对象和这种对象的对象组(合成)用一种统一的方式进行处理。   如图所示,单个的对象:Leaf和合成对象:Composite都提供了Operation()方法来提供相同的操作。其相同的操作往往使用递归来进行处理。  在实现中,合成会产生二种结构,一种是树形的结构,另一种是环形的结构。由于环形结构存在无限递归的情况,所以在实现时要设法防止对同一对象进行二次操

2006-10-08 21:58:00 573

原创 外观模式(Facade Pattern)

  外观模式用于为了特定的应用而将一个复杂子系统或类库中的已有的类的部分功能根据需要提取出来形成一个或少量几个类,称之为外观类。  这些类拥有特定应用所需要的大部分甚至绝大部分功能,但其呈现给使用者的复杂度却远远少于原有的子系统或类库,而极大的方便了使用者。

2006-10-08 19:50:00 363

原创 适配器模式(Adapter Pattern)

  适配器模式用于对已有的类进行包装,以适应新的命名、功能或接口规范。 

2006-10-08 19:44:00 377

原创 一个关于Oracle分页的实现方案

前言:在使用数据库进行项目的开发过程中,往往需要对查询结果进行分页处理,但由于每个数据库管理系统的实现不同,所使用的方法也不相同,本文展示了一个在使用Oracle数据库管理系统时的一个分页方案。 注意:在此展现的是一种方法,并不是一个通用的分页存储过程。 环境:OS:Microsoft® Windows Server 20003DBMS:Oracle9i Enterpris

2006-07-30 09:20:00 810

原创 继承和多态

1 泛化泛化是一般元素和特殊元素之间的关系,是将多个特殊元素中的公共特征或行为提取出来而形成一般元素。可替换性原则是,在使用一般元素的任何地方都可以使用特殊元素来代替,因为特殊元素除了拥有自身所有的特征和行为外,肯定拥有一般元素的所有特征和行为。类泛化是类之间最高层次的依赖。类泛化的过程是将多个具有相同属性和操作的特殊类中的公共部分提取出来而形成特殊类的一般类,即超类。与泛化过程相反的

2006-07-30 08:49:00 759

空空如也

空空如也

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

TA关注的人

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