<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_pwy</title><subtitle type="text">lsjwzh</subtitle><id>http://feed.cnblogs.com/blog/u/32156/rss</id><updated>2010-05-08T07:00:48Z</updated><author><name>lsjwzh</name><uri>http://www.cnblogs.com/lsjwzh/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lsjwzh/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/32156/rss"/><entry><id>http://www.cnblogs.com/lsjwzh/archive/2010/05/08/1730480.html</id><title type="text">句柄、引用、指针与对象(转)</title><summary type="text">找了好久。。发现这个讲的好像容易理解些。http://hi.baidu.com/ilotus%5Fy/blog/item/f1ed0e99baad0a0f6f068c19.html句柄、引用、指针与对象2008年12月01日 星期一 11:31今日小陆把我从梦中唤醒，问我关于句柄的问题！刚开始还能对付，依旧睡眼朦胧的回着短信，但是不过一会儿发现自己也已经模糊了，这么基础的问题现在还不会，以后怎么吃...</summary><published>2010-05-08T07:01:00Z</published><updated>2010-05-08T07:01:00Z</updated><author><name>lsjwzh</name><uri>http://www.cnblogs.com/lsjwzh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lsjwzh/archive/2010/05/08/1730480.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lsjwzh/archive/2010/05/08/1730480.html"/><content type="html">&lt;div &gt;&lt;span style="color: #ff0000;"&gt;找了好久。。发现这个讲的好像容易理解些。&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&lt;span style="color: #ff0000;"&gt;&lt;a href="http://hi.baidu.com/ilotus%5Fy/blog/item/f1ed0e99baad0a0f6f068c19.html"&gt;http://hi.baidu.com/ilotus%5Fy/blog/item/f1ed0e99baad0a0f6f068c19.html&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div &gt;句柄、引用、指针与对象&lt;/div&gt;&#xD;
&lt;div &gt;2008年12月01日 星期一 11:31&lt;/div&gt;&#xD;
&lt;table style="table-layout: fixed; width: 100%;"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td&gt;&#xD;
&lt;div id="blog_text" &gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 12pt;"&gt;今日小陆把我从梦中唤醒，问我关于句柄的问题！刚开始还能对付，依旧睡眼朦胧的回着短信，但是不过一会儿发现自己也已经模糊了，这么基础的问题现在还不会，以后怎么吃饭？顿时清醒过来，跑到教研室找网上的xdjm们咨询了下，现在总结在下面：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 12pt;"&gt;首先要分清是在什么地方讨论，在以前学C时，是这么区分的(1)指针是对象在内存中的地址；(2)引用是对象的别名，其实质就是功能受限但是安全性更高的指针；(3)句柄是指针的指针，句柄实际上是一个数据，是一个Long (整长型)的数据。句柄是一个标识符，是拿来标识对象或者项目的，它就象我们的姓名一样。Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下，Windows内存管理器经常在内存中来回移动对象，依此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。如果地址总是如此变化，我们该到哪里去找该对象呢?为了解决这个问题，Windows操作系统为各应用程序腾出一些内存储地址，用来专门登记各应用对象在内存中的地址变化，而这个地址(存储单元的位置)本身是不变的。Windows内存管理器在移动对象在内存中的位置后，把对象新的地址告知这个句柄地址来保存。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 12pt;"&gt;然后我们回到JAVA来解释这个问题：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 12pt;"&gt;Java中有3个数据类型：基本数据类型、引用类型和null类型。其中，引用类型包括类类型（含数组）、接口类型。为了区别引用类型的变量标识符和基本数据类型变量标识符，我们特别的（特意的）使用Handle来称呼引用类型的变量标识符。对象的引用是创建对象时的返回值！引用是new表达式的返回值。new A(); 这里真正创建了一个对象，但我们没有用句柄去持有（hold、拿着、保存）该引用。handle是变量，reference是一种变量值。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 12pt;"&gt;A a = new A() ;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 12pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 12pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;span style="font-size: 12pt;"&gt;（1）句柄a&amp;mdash;&amp;mdash;常见为A a；或A a=new A()；前者没有被初始化，后者被手工初始化。（如果a是一个类的成员变量，会被默认初始化。）句柄不同于基本变量的关键，它是一种间接寻址方式。句柄声明常常称为对象声明（如果你感到可能引起混淆，不理睬对象声明的说法好啦）。 &lt;/span&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 12pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 12pt;"&gt;（2）创建对象&amp;mdash;&amp;mdash;new A()；这才是真正的创建对象。对象一般通过new表达式来创建。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 12pt;"&gt;（3）计算new表达式的值：计算new表达式的值的整个过程，在微观上完成了对象的创建和这个对象自己的成员变量的初始化，在宏观上得到new表达式的值，这个值称为新对象的引用；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 12pt;"&gt;（4）引用：new A()的值。引用可以简单的看作对象占据内存空间的地址；通过对象的引用，就可以方便的与其他对象区别开来，引用就是对象独特的身份标识。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 12pt;"&gt;（5）句柄的初始化：句柄 = 引用；即把引用赋值给句柄，如语句a=new A()；完成句柄的初始化后，就可以用句柄遥控对象了。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 12pt;"&gt;（6）对于语句A a=new A()；是对象创建及对象初始化与句柄的初始化的合并。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&lt;img src="http://www.cnblogs.com/lsjwzh/aggbug/1730480.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lsjwzh/archive/2010/05/08/1730480.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lsjwzh/archive/2010/03/13/1684967.html</id><title type="text">委托应用实例</title><summary type="text">需求：根据传入的action参数，自动构造与之对应的request。直接上代码。先定义一个MyRequest类。下有子类：AddRequest，LoadRequest，DeleteRequest。MyRequestMyRequest定义了一个虚方法 Msg();各个子类由于算法不同，可重写该方法。下面是关键：MyRequestCreatorMyRequestCreator 负责判断参数action...</summary><published>2010-03-13T03:08:00Z</published><updated>2010-03-13T03:08:00Z</updated><author><name>lsjwzh</name><uri>http://www.cnblogs.com/lsjwzh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lsjwzh/archive/2010/03/13/1684967.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lsjwzh/archive/2010/03/13/1684967.html"/><content type="html">&lt;p&gt;需求：根据传入的action参数，自动构造与之对应的request。&lt;/p&gt;&#xD;
&lt;p&gt;直接上代码。&lt;/p&gt;&#xD;
&lt;p&gt;先定义一个MyRequest类。下有子类：AddRequest，LoadRequest，DeleteRequest。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div onclick="cnblogs_code_show('d1b2df71-e45a-4247-92d9-0eb96baaab41')" style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div id="cnblogs_code_open_d1b2df71-e45a-4247-92d9-0eb96baaab41" &gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #000000;"&gt;   &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; MyRequest&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; &lt;span style="color: #000000;"&gt;    {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; Action { &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;; }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;public GridPagerParams Pager { get; private set; }&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt; &lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; MyRequest()&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt; &lt;span style="color: #000000;"&gt;        {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt; &lt;span style="color: #000000;"&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;virtual&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; Msg()&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt; &lt;span style="color: #000000;"&gt;        {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt; &lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; Action.ToString();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt; &lt;span style="color: #000000;"&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt; &lt;span style="color: #000000;"&gt;    }&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;MyRequest定义了一个虚方法 Msg();&lt;/p&gt;&#xD;
&lt;p&gt;各个子类由于算法不同，可重写该方法。&lt;/p&gt;&#xD;
&lt;p&gt;下面是关键：MyRequestCreator&lt;/p&gt;&#xD;
&lt;p&gt;MyRequestCreator 负责判断参数action，并返回相应的 request.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div onclick="cnblogs_code_show('293b208e-0142-441a-8226-1b76d37b4864')" style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div id="cnblogs_code_open_293b208e-0142-441a-8226-1b76d37b4864" &gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; MyRequestCreator&lt;br /&gt;    {&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt; Dictionary&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;, MyRequestCreator._newMyType&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; _CreatorDict &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Dictionary&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;, MyRequestCreator._newMyType&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;();&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt; MyRequest _newMyType();&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt; MyRequestCreator()&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;初始化&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        {&lt;br /&gt;            _CreatorDict.Add(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;load&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; MyRequestCreator._newMyType(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;() { &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; LoadRequest(); }));&lt;br /&gt;            _CreatorDict.Add(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;add&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; MyRequestCreator._newMyType(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;() { &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; AddRequest(); }));&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;            _CreatorDict.Add(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;delete&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; MyRequestCreator._newMyType(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;() { &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; MyRequest(); }));&lt;br /&gt;        }&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt; MyRequest CreateHandler(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; action)&lt;br /&gt;        {&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (_CreatorDict.ContainsKey(action))&lt;br /&gt;            {&lt;br /&gt;                MyRequest retHandler &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; _CreatorDict[action].Invoke();&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;try&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                {&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; retHandler;&lt;br /&gt;                }&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;catch&lt;/span&gt;&lt;span style="color: #000000;"&gt; (Exception e)&lt;br /&gt;                {&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;throw&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Exception(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;请求处理失败！&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, e);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;        }&lt;br /&gt;    }&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;客户端调用时：&lt;/p&gt;&#xD;
&lt;p&gt;MyRequest request = MyRequestCreator.CreateHandler("load");&lt;/p&gt;&#xD;
&lt;p&gt;这样就可以生成MyRequest的具体子类，并以MyRequest方式使用它的功能。&lt;/p&gt;&#xD;
&lt;p&gt;整个过程完全没有if或者case，配合emit还可以实现动态增加MyRequest的子类并注册到MyRequestCreator中去。&lt;/p&gt;&#xD;
&lt;p&gt;更重要的是，使用这种方式，比根据Activator.CreateInstance(typeof(MyRequest));产生的对象要快的多，接近于直接使用new object（）的方式。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lsjwzh/aggbug/1684967.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lsjwzh/archive/2010/03/13/1684967.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lsjwzh/archive/2009/12/13/1623016.html</id><title type="text">线程安全的ArrayList和HashTable</title><summary type="text">ArrayList,HashTable,线程安全,同步</summary><published>2009-12-13T07:03:00Z</published><updated>2009-12-13T07:03:00Z</updated><author><name>lsjwzh</name><uri>http://www.cnblogs.com/lsjwzh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lsjwzh/archive/2009/12/13/1623016.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lsjwzh/archive/2009/12/13/1623016.html"/></entry><entry><id>http://www.cnblogs.com/lsjwzh/archive/2009/12/12/1622451.html</id><title type="text">[转]HttpContext.Current.Cache 和 HttpRuntime.Cache</title><summary type="text">本文来自CSDN博客，转载请标明出处：http://blog.csdn.net/avon520/archive/2009/11/25/4872704.aspx.NET中Cache有两种调用方式：HttpContext.Current.Cache 和 HttpRuntime.Cache，这两种方式有什么区别呢？我们先看MSDN上的解释： HttpContext.Current.Cache：为当前 H...</summary><published>2009-12-12T05:02:00Z</published><updated>2009-12-12T05:02:00Z</updated><author><name>lsjwzh</name><uri>http://www.cnblogs.com/lsjwzh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lsjwzh/archive/2009/12/12/1622451.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lsjwzh/archive/2009/12/12/1622451.html"/></entry><entry><id>http://www.cnblogs.com/lsjwzh/archive/2009/08/05/1539888.html</id><title type="text">仿EXT风格,仿EXT功能,Jquery页签插件,EM.Tabs 1.1,新增事件处理机制,可拓展</title><summary type="text">1.1新增事件机制,可以在初始化时以及初始化后添加事件处理.(事件会队列处理,不会覆盖之前的事件处理函数)在线demo:http://lsjwzh.a6.redidc.com/发布一个.Jquery页签插件,仿EXT风格,仿EXT功能IE 6 8 ,FF 3.5 通过.远程获取页面用的iframe.(ie6下 每曾加一个远程页签,删除后会多500-1000k左右的内存.没办法这个是ie6的老问题)...</summary><published>2009-08-05T12:56:00Z</published><updated>2009-08-05T12:56:00Z</updated><author><name>lsjwzh</name><uri>http://www.cnblogs.com/lsjwzh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lsjwzh/archive/2009/08/05/1539888.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lsjwzh/archive/2009/08/05/1539888.html"/></entry><entry><id>http://www.cnblogs.com/lsjwzh/archive/2009/07/24/1530617.html</id><title type="text">在IE下监控页面内存资源和dom节点(sIEve软件使用简介)(转)</title><summary type="text">在IE下监控页面内存资源和dom节点(sIEve软件使用简介) 下载：http://files.cnblogs.com/lsjwzh/sIEve-0.0.8.rar先注明一下: 这篇文章只是讲解 在IE下如何利用 sIEve(一个drip的加强版) 来发现 内存泄露和内存回收问题,而不是讲解关于 IE的内存管理和内存泄露原理的文章.关于IE的内存管理和内存泄露的更多知识还麻烦大家自行google了...</summary><published>2009-07-24T15:16:00Z</published><updated>2009-07-24T15:16:00Z</updated><author><name>lsjwzh</name><uri>http://www.cnblogs.com/lsjwzh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lsjwzh/archive/2009/07/24/1530617.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lsjwzh/archive/2009/07/24/1530617.html"/></entry><entry><id>http://www.cnblogs.com/lsjwzh/archive/2009/01/11/1373724.html</id><title type="text">iframe内存泄漏问题</title><summary type="text">设置iframe的src为'about:blank'之后,还必须用iframe.document.write('');这样才能将内容清空.但是这样处理之后任然会有500-1000K左右的内存残留,这就是ie6的iframe bug,动态创建的iframe总会耗费掉一些内存.</summary><published>2009-01-11T09:59:00Z</published><updated>2009-01-11T09:59:00Z</updated><author><name>lsjwzh</name><uri>http://www.cnblogs.com/lsjwzh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lsjwzh/archive/2009/01/11/1373724.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lsjwzh/archive/2009/01/11/1373724.html"/></entry><entry><id>http://www.cnblogs.com/lsjwzh/archive/2008/11/09/1330260.html</id><title type="text"> ASP.NET缓存:方法分析和实践示例</title><summary type="text">尽早缓存；经常缓存 您应该在应用程序的每一层都实现缓存。向数据层、业务逻辑层、UI 或输出层添加缓存支持。内存现在非常便宜 &amp;mdash; 因此，通过以智能的方式在整个应用程序中实现缓存，可以获得很大的性能提高。 缓存可以掩盖许多过失 缓存是一种无需大量时间和分析就可以获得&amp;ldquo;足够良好的&amp;rdquo;性能的方法。这里再次强调，内存现在非常便宜，因此，如果您能通过将输出缓存 30 秒，而不...</summary><published>2008-11-09T14:53:00Z</published><updated>2008-11-09T14:53:00Z</updated><author><name>lsjwzh</name><uri>http://www.cnblogs.com/lsjwzh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lsjwzh/archive/2008/11/09/1330260.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lsjwzh/archive/2008/11/09/1330260.html"/></entry><entry><id>http://www.cnblogs.com/lsjwzh/archive/2008/11/08/1329840.html</id><title type="text"> showModalDialog()方法使用详解 (转)</title><summary type="text">showModalDialog()方法使用详解 此文为转载！非常感谢！Javascript有许多内建的方法来产生对话框，如：window.alert(), window.confirm(),window.prompt().等。 然而IE提供更多的方法支持对话框。如：　　showModalDialog() (IE 4+ 支持)　　 showModelessDialog() (IE 5+ 支持)win...</summary><published>2008-11-08T14:20:00Z</published><updated>2008-11-08T14:20:00Z</updated><author><name>lsjwzh</name><uri>http://www.cnblogs.com/lsjwzh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lsjwzh/archive/2008/11/08/1329840.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lsjwzh/archive/2008/11/08/1329840.html"/></entry><entry><id>http://www.cnblogs.com/lsjwzh/archive/2008/10/26/1319727.html</id><title type="text">[转]Ext2.0中发送同步请求</title><summary type="text">[转]Ext2.0中发送同步请求转自：http://www.smellcode.cn/index.php/javascript/ext20zhongfasongtongbuqingqiu/在extjs的forum中，大家似乎觉得Ajax就是异步的，发送同步请求不合理，没有效率。但在我的开发中，确实就有。比如，在desktop中getModules要返回一个数组，如果我从后台解析一个xml，来动态生...</summary><published>2008-10-26T02:55:00Z</published><updated>2008-10-26T02:55:00Z</updated><author><name>lsjwzh</name><uri>http://www.cnblogs.com/lsjwzh/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lsjwzh/archive/2008/10/26/1319727.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lsjwzh/archive/2008/10/26/1319727.html"/></entry></feed>
