随笔分类 -  设计模式

摘要:摘要: 查看本人文章索引请通过http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html一、定义将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示。二、应用场景当一个产品需要复杂的构造,但是构造过程是稳定的,只是构造的对象有不同表示时,就可以使用建造模式。三、代码实现class Product { IList<string> parts=new List<string>(); public void Add(string part) { ... 阅读全文
posted @ 2012-06-01 16:17 赵学智 阅读(887) 评论(0) 推荐(1) 编辑
摘要:查看本人文章索引请通过http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html一、定义定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。二、应用场景Template Method模式非常简单,但是在面向对象系统中有着大量的应用。比如我们先提供一个父类,然后先把固定不变的算法放在父类中实现,但是一些可变的行为就先不实现它,留给子类实现。这时候我们发布出去了,如果使用者需要扩展功能,则你可以继承这个抽象类,然后覆写里面的抽象方法或 阅读全文
posted @ 2012-06-01 14:27 赵学智 阅读(1876) 评论(0) 推荐(2) 编辑
摘要:查看文章索引请通过http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html一、什么是原型模式?原型模式:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象原型模式(Prototype结构图)原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需知道任何创建的细节。二、原型模式代码实现:abstract class prototype{ private string id; public prototype(string id) { this.id = i... 阅读全文
posted @ 2012-05-18 18:00 赵学智 阅读(1277) 评论(0) 推荐(0) 编辑
摘要:查看本人文章索引请通过http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html一、 什么是代理模式?代理模式,为其他对象提供一种代理以控制对这个对像的访问。代理模式结构图:二、 代理模式都用在一些什么场合?1. 远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在不两只的地址空间的事实。(他所使用到的例子。Webservice在.net 中的应用,当我应用程序的项目中加入一个Web引用,引用一个WebService,此时会在项目中生成一个Webreference的文件夹和一些文件,其实它们就是代 阅读全文
posted @ 2012-05-18 17:40 赵学智 阅读(2338) 评论(1) 推荐(3) 编辑
摘要:查看本人文章索引请通过http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html一、定义策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。二、概述应用场景: 1、 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。 2、 需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现。 3、 对客户隐藏具体策略(算法)的实现细节,彼此完全独立。三、代码实现需求:商场收费系统,根据商品的单价和数... 阅读全文
posted @ 2012-05-11 23:17 赵学智 阅读(2455) 评论(4) 推荐(3) 编辑
摘要:查看本人文章索引请通过http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html在工厂方法里讲到了加减乘除的例子,请查阅http://www.cnblogs.com/seesea125/archive/2012/05/02/2478981.html一、抽象工厂的定义提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。二、实现思路实现思路:如果说简单工厂与工厂方法是对同一个问题的两种不同的解决方法的话,抽象工厂就是解决一系列这种问题的方法。因为其主要的作用就是生产一系列相互依赖的对象,而不用去关心它们具体的实现 阅读全文
posted @ 2012-05-11 14:44 赵学智 阅读(2727) 评论(7) 推荐(2) 编辑
摘要:查看本人文章索引请通过http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html一、简单工厂和工厂方法定义:简单工厂模式是由一个工厂类根据参数来决定创立出哪一种产品类的实例。工厂方法模式通过调用不同的方法返回需要的类,而不是去实例化具体的类。 对实例创建进行了包装。 工厂方法是一组方法, 他们针对不同条件返回不同的类实例,这些类一般有共同的父类。工厂方法模式实施一种按需分配的策略, 即传入参数进行选择, 工厂方法根据参数进行选择,返回具体的实例。二、实例讲解:实现加减乘除程序需求:处理两个数的+,-,*,/等运算1. 是面向 阅读全文
posted @ 2012-05-02 14:16 赵学智 阅读(4215) 评论(4) 推荐(0) 编辑
摘要:查看本人文章索引请通过http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html一、面向对象的术语?1. 类 类作为设计蓝图来创建对象的代码段,它描述了对象的特征;该对象具有什么样的属性,怎样使用对象完成一些任务,他对事件进行怎样的响应等! 对象具有状态,一个对象用数据值来描述它的状态。 对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。 对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。 2. 对象 对象是类的一个实例,通常通过调用类的一个构造函数来创建它! 3. 方法 方法是在类中定义的... 阅读全文
posted @ 2012-04-20 10:50 赵学智 阅读(4045) 评论(2) 推荐(2) 编辑
摘要:查看本人文章索引请通过http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html我们在编程中最常用的模式就是单例模式了,然而单例模式都用在什么场合?为什么不用静态方法而要用单例模式呢?要搞清这些问题,需要从静态方法和非静态方法的区别和联系说起。一、静态方法常驻内存,非静态方法只有使用的时候才分配内存?一般都认为是这样,并且怕静态方法占用过多内存而建议使用非静态方法,其实这个理解是错误的。为什么会这样,先从内存分配开始说起:托管堆的定义:对于32位的应用程序来说,应用程序完成进程初始化后,CLR将在进程的可用地址空间分配一块保 阅读全文
posted @ 2012-04-05 17:31 赵学智 阅读(38935) 评论(37) 推荐(23) 编辑
摘要:查看文章索引请通过http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html一、 面向对象,这个对象到底是什么? 这个对象不是C#中的实例,C#中我们把一个类的实例也叫做对象,这种对象严格的说应该是面向对象的编程实现(OOP)中的对象,面向对象编程,也不是面向类的实例编程。对象的定义是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。也有的定义为“一切都是对象”然而面向对象也不能简单的等价理解成面向任何事物编程,面对一切编程?开玩笑,呵呵。因此面向对象 阅读全文
posted @ 2012-04-03 18:55 赵学智 阅读(77543) 评论(17) 推荐(38) 编辑