03 2012 档案
摘要:桥接模式有点像适配器模式,都是用一个类将一种接口转换成另一种接口。但是适配器模式的意图是:是一个或多个类的接口看起来像一个特定的接口。桥接模式将类的接口和它的实现分离,无需修改客户端代码就可以改变或替换实现过程。 桥接模式的参与这又Abstraction,他定义类的接口,Refined Abstraction,他扩展实现由Abstraction定义的接口;Implementor,它定义实现 的接口;ConcreteImplementor,他是实现类。 假设我们有一个程序,要在窗口中显示一系列的产品。最简单的就是用ListBox,但在售出大量产品后,我们希望在产品中显示产品名称以及销...
阅读全文
摘要:结构型模式概述 结构模式(Structural Pattern)描述的是如何组合类和对象已获得更大的结构。类模式和对象模式之间的区别是,类模式描述的是如何使用继承提供更有用的程序接口。而对象模式描述的是通过使用对象组合或将对象包含在其他对象里,将对象组合成更大的结构。 例如,适配器模式(Adapter Pattern)可以使用一个类的接口区配另一个接口,从而是程序设计变得更容易。还会看到其他的结构模式,能将对象组合来实现新功能。例如组合模式(Composite Pattern),正如他的名字一样对象组合,其中每个对象既可以是简单的对象也可以是组合对象。代理模式(Proxy Pattern)通常
阅读全文
摘要:介绍用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。解决什么问题:它主要面对的问题是:“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口。原型模式强调的是用已有对象克隆出新对象,是对象的创建便方便,不需要重复的new操作。原型模式的原型中一般会有一个Clone方法
阅读全文
摘要:生成器模式又称建造者模式,定义一个抽象的建造者的角色(Builder),规定所有具体的建造者都应该具有的功能——这些功能就是如何创建复杂对象的某个特定部分(子对象),而具体如何创建子对象有具体的创建者实现。再定义一个指导者的角色,它把创建者作为工具,知道如何使用这个工具来创建复杂对象。这样,客户在需要创建这个复杂对象的时候,只需要给指导者一个具体的创建者就可以了。至于具体创建者如何创建子对象的细节以及这些子对象之间的差异,不是指导者,也不是客户关心的。 下面我们用一个例子来说明一下生成器模式,假设我们不但需要一个计算的算法,还需要一个由于显示数据根据数据不同而完全不同的用户界面。我们考...
阅读全文
摘要:尽管在某种程度上,单件模式是限制而不是改进类的创建,但它仍和其他创建模式分在一组。单件模式可以保证一类有且只有一个实例,并提供一个访问它的全局访问点,在程序设计过程中,有很多情况需要确保一个类只能有一个实例。例如系统中能有一个窗口管理器,一个数据库引擎的访问点。PC机中可能有几个串口,但只能有一个COM1实例。使用静态方法创建单件 让一个类只有一个实例,最容易的方法就是在类中嵌入一个静态变量,并在第一个类实例中设置改变量,而且每次进入构造函数都要检查。不管类有多少实例,静态变量只能有一个实例。为了防止类被多次实例化,我们把构造函数声明为私有的,这样只能在类的静态方法里创建一个实例。下面创建一.
阅读全文
摘要:抽象工厂模式,比工厂模式具有更高层次的抽象。当要返回一系列相关类中的某一个,而每个类都能根据需要返回不同的对象时,可以使用这种模式。换句话说,抽象工厂是一个工厂对象,他能返回一系列相关类中的一个类。可以用简单工厂决定返回那个类。通常认为,实验式的例子应该引用汽车制造产,我们希望丰田汽车完全使用丰田配件,而福特汽车完全使用福特配件。可以把每个汽车制造厂设想为抽象工厂,配件作为一组相关的类。花园规划工厂 我们可以考虑一下实际的例子,字应用程序里要用到抽象工厂。假设读者编写一个程序来规划花园,这可能是季生植物型花园、蔬菜型花园、或者多年植物花园。不管规划哪种类型的花园,都会遇到如下问题:1.边缘种.
阅读全文
摘要:工厂方法工厂的概念反复出现在面向对象程序设计中,在C#本身和其他设计模式(例如生成器模式)中,就能找到几个例子。在这个例子中,有一个类负责决定在单继承体系结构中实例化哪一个字类。 工厂方法模式(Factory Method Pattern)对这种思想进行了巧妙的扩展,它不是用一个专门的类来决定实例化那一个字类,相反,超类把这种决定延迟到没个子类。这种设计模式实际上没有决策点,即没有直接选择一个字类实例化的决策。按照这种模式编写的程序定义了一个抽象类,他去创建对象,但让子类决定创建哪一种对象。 这里考虑一个相当简单的例子,在游泳比赛中为运动员确定泳道。在一个赛事中,游泳选手完成几次预赛后,按..
阅读全文
摘要:所有的创建模式都涉及到创建对象示例方式。这一点很重要,因为程序不应该依赖于对象如何创建和如何安排 。当然,使用new运算符是C#创建一个对象实力最简单的方法然而,这实际上相当于硬编码他和程序中如何创建对象管理有关。多数情况下,创建对象的本意随着程序的需求而不同,将创建一个抽象成一个专门的“创造器”类、,会使程序更加灵活、更通用工厂模式(Factory Method Pattern) 提供了一个简单的决策类,他根据提供的数据反回一个抽象基类的多个子类中的一个。抽象工厂模式(Abstract Factory Pattern)提供了一个创建并返回一系列相关对象的接口。单例模式(Singleton P
阅读全文
摘要:概述索引器允许类或结构的实例就像数组一样进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。在下面的示例中,定义了一个泛型类,并为其提供了简单的 get和 set访问器方法(作为分配和检索值的方法)。Program类为存储字符串创建了此类的一个实例。Code 1 class SampleCollection<T> 2 { 3 // Declare an array to store the data elements. 4 private T[] arr = new T[100]; 5 6 // Define the indexer, which will ...
阅读全文
摘要:.Net中的委托类似于 C 或 C++ 中的函数指针。使用委托使程序员可以将方法引用封装在委托对象内。然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法。与 C 或 C++ 中的函数指针不同,委托是面向对象、类型安全的,并且是安全的。 委托声明定义一种类型,它用一组特定的参数以及返回类型封装方法。对于静态方法,委托对象封装要调用的方法。对于实例方法,委托对象同时封装一个实例和该实例上的一个方法。如果您有一个委托对象和一组适当的参数,则可以用这些参数调用该委托。委托的一个有趣且有用的属性是,它不知道或不关心自己引用的对象的类。任何对象都可以;只是方法的参数类型..
阅读全文
摘要:1、概念设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。2、一个模式的四个基本要素综述 设计模式使人们可以更加简单方便地复用成功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。模式名称(pattern name) 一个助记名,它用一两个词来描述模式的问题、解决方案和效果。命名一个新的模式增加了我..
阅读全文
摘要:官网:http://www.appelsiini.net/projects/jeditable示例:http://www.appelsiini.net/projects/jeditable/default.html什么是即时编辑?一般的流程是这样的,当用户点击网页上的文字时,该文字就会出现在一个编辑框中,用户对文字进行修改完成后点击提交按钮,新的文本将发送到服务器上,然后表单消失,显示最新编辑的文本。基本的使用方法如下:首先编辑一个 html 文件,包含这么一段:1 2 <div class="edit" id="div_1">Dolor&l
阅读全文
摘要:就一个简单的Table,开始我们的钻研<tableid="DetailInfo"><tbody><tr> <th style="width: 30px;"> <input id="chbAll" type="checkbox" onclick="fnSelectAll(this);" /></th><th>标题1</th><th>标题2</th><th>标题3<
阅读全文
摘要:一、基础1、说明:创建数据库CREATE DATABASE database-name 2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'--- 开始 备份BACKUP DATABASE pubs TO testBack 4、说明:创建新表create table tabname(col1 type1 [
阅读全文
摘要:DECLARE @dt datetimeSET @dt=GETDATE()DECLARE @number intSET @number=1--1.指定日期该年的第一天或最后一天--第一天为月日、最后一天为月日都是固定的 --A. 年的第一天 SELECT CONVERT(char(5),@dt,120)+'1-1'AS '年第一天' --B. 年的最后一天 SELECT CONVERT(char(5),@dt,120)+'12-31'AS '年最后一天'--2.指定日期所在季度的第一天或最后一天 --A. 季度的第一天 SELEC
阅读全文