04 2012 档案

摘要:1 <mce:script type="text/javascript"> 2 <!-- 3 //当天 4 function showToDay() 5 { 6 var Nowdate=new Date(); 7 M=Number(Nowdate.getMonth())+1 8 return Nowdate.getYear()+"-"+M+"-"+Nowdate.getDate(); 9 } 10 11 12 //本周第一天 13 function sh... 阅读全文
posted @ 2012-04-17 12:39 孙金棚 阅读(1153) 评论(1) 推荐(1)
摘要:意图 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。适用性 一组对象以定义良好但是复杂的方式进行通信。产生的相互依赖关系结构混乱且难以理解。 一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。 想定制一个分布在多个类中的行为,而又不想生成太多的子类。结构图 Code 1 // Mediator 2 3 4 /* Notes: 5 * Consider a mediator as a hub, which objects that need to talk - 6 * but do... 阅读全文
posted @ 2012-04-16 15:37 孙金棚 阅读(383) 评论(1) 推荐(1)
摘要:查询表达式基础通常,源数据会在逻辑上组织为相同种类的元素序列。 SQL 数据库表包含一个行序列。 与此类似,ADO.NET DataTable 包含一个DataRow对象序列。 在 XML 文件中,有一个 XML 元素“序列”(不过这些元素按分层形式组织为树结构)。 内存中的集合包含一个对象序列。应用程序始终将源数据视为一个 IEnumerable(Of T)或IQueryable(Of T)集合。 在 LINQ to XML 中,源数据显示为一个 IEnumerable<XElement >。 在 LINQ to DataSet 中,它是一个 IEnumerable<Dat 阅读全文
posted @ 2012-04-13 09:57 孙金棚 阅读(1190) 评论(0) 推荐(4)
摘要:概述迭代器(Iterator)模式,又叫做游标(Cursor)模式。GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。 从定义可见,迭代器模式是为容器而生。很明显,对容器对象的访问必然涉及到遍历算法。你可以一股脑的将遍历方法塞到容器对象中去;或者根本不去提供什么遍历算法,让使用容器的人自己去实现去吧。这两种情况好像都能够解决问题。意图提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。适用性1.访问一个聚合对象的内容而无需暴露它的内部表示。2.支持对聚合对象的多种遍历。3.为遍历不同的聚合结构提供一个统一的接 阅读全文
posted @ 2012-04-12 18:13 孙金棚 阅读(625) 评论(1) 推荐(1)
摘要:概述LINQ,语言集成查询(Language INtegrated Query)是一组用于c#和Visual Basic语言的扩展。它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。LINQ定义了大约40个查询操作符,如select、from、in、where以及order by(C#)中。使用这些操作可以编写查询语句。不过,这些查询还可以基于很多类型的数据,每个数据类型都需要一个单独的LINQ类型。在 Visual Studio 中,可以用 Visual Basic 或 C# 为以下数据源编写 LINQ 查询:SQL Server 数据库、XML 文档、ADO 阅读全文
posted @ 2012-04-12 13:56 孙金棚 阅读(1371) 评论(8) 推荐(6)
摘要:意图 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。适用性 1.抽象出待执行的动作以参数化某对象,你可用过程语言中的回调(c a l l b a c k )函数表达这种参数化机制。所谓回调函数是指函数先在某处注册,而它将在稍后某个需要的时候被调用。C o m m a n d 模式是回调机制的一个面向对象的替代品。 2.在不同的时刻指定、排列和执行请求。一个C o m m a n d 对象可以有一个与初始请求无关的生存期。如果一个请求的接收者可用一种与地址空间无关的方式表达,那么就可将负责该请求的命令对象传送给另一个... 阅读全文
posted @ 2012-04-09 12:33 孙金棚 阅读(1028) 评论(2) 推荐(2)
摘要:意图 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。适用性 1.有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。 2.你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。 3.可处理一个请求的对象集合应被动态指定。结构图 Code 1 // Chain Of Responsibility 2 3 /* Notes: 4 * The client sends a request and it will be operated on by one o... 阅读全文
posted @ 2012-04-09 09:25 孙金棚 阅读(1373) 评论(0) 推荐(1)
摘要:意图 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Te m p l a t e M e t h o d 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。实用性 1.一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。 2.各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。这是O p d y k e 和J o h n s o n 所描述过的“重分解以一般化”的一个很好的例子[ O J 9 3 ]。首先识别现有代码中的不同之处,并且将不同之处分离为新的操作。最后,用一个调用这些新的操作的模板方法来替换这些不同的代码。 3.控制子类扩展。... 阅读全文
posted @ 2012-04-08 16:08 孙金棚 阅读(334) 评论(0) 推荐(0)
摘要:意图 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。适用性 1.当有一个语言需要解释执行, 并且你可将该语言中的句子表示为一个抽象语法树时,可使用解释器模式。而当存在以下情况时该模式效果最好。 2.该文法简单对于复杂的文法, 文法的类层次变得庞大而无法管理。此时语法分析程序生成器这样的工具是更好的选择。它们无需构建抽象语法树即可解释表达式, 这样可以节省空间而且还可能节省时间。 3.效率不是一个关键问题最高效的解释器通常不是通过直接解释语法分析树实现的, 而是首先将它们转换成另一种形式。例如,正则表达式通常被转换成状态机。但即使在这种情... 阅读全文
posted @ 2012-04-08 15:36 孙金棚 阅读(1015) 评论(2) 推荐(1)
摘要:意图 代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式的思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象。这些额外的操作通常需要与实际对象进行通信。适用性1.在需要用比较通用和复杂的对象指针代替简单的指针的时候,使用P r o x y 模式。下面是一 些可以使用P r o x y 模式常见情况: 1) 远程代理(Remote Proxy )为一个对象在不同的地址空间提供局部代表。 NEXTSTEP[Add94] 使用N X P r.. 阅读全文
posted @ 2012-04-07 11:50 孙金棚 阅读(891) 评论(0) 推荐(2)
摘要:意图 运用共享技术有效地支持大量细粒度的对象。典型的享元模式的例子为文书处理器中以图形结构来表示字符。一个做法是,每个字型有其字型外观, 字模 metrics, 和其它格式资讯,但这会使每个字符就耗用上千字节。取而代之的是,每个字符参照到一个共享字形物件,此物件会被其它有共同特质的字符所分享;只有每个字符(文件中或页面中)的位置才需要另外储存。以下程式用来解释上述的文件例子。这个例子用来解释享元模式利用只载立执行立即小任务所必需的资料,因而减少内存使用量。 适用性 1.一个应用程序使用了大量的对象。 2.完全由于使用大量的对象,造成很大的存储开销。 3.对象的大多数状态都可变为外部状态... 阅读全文
posted @ 2012-04-06 09:25 孙金棚 阅读(1232) 评论(1) 推荐(4)
摘要:意图 为子系统中的一组接口提供一个一致的界面,F a c a d e 模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。适用性 1.当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难。F a c a d e 可以提供一个简单的缺省视图,这一视图对大多数用户来说已经足够,而那些需要更多的可定制性的用户可以越过f a c a d e 层。 2.客户程序与抽象类的实现部分之间存在着很大的依赖性。引入f a c ... 阅读全文
posted @ 2012-04-05 19:09 孙金棚 阅读(322) 评论(1) 推荐(1)
摘要:意图 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。适用性 1.在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。 2.处理那些可以撤消的职责。 3.当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。 结构图Code 1 // Decorator 2 3 /* Notes: 4 * Dynamically wrap functionality with additonal func... 阅读全文
posted @ 2012-04-05 18:42 孙金棚 阅读(1155) 评论(0) 推荐(2)