﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-面朝大海,春暖花开-随笔分类-软件工程</title><link>http://www.blogjava.net/sodmewuhan/category/9572.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 03:30:52 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 03:30:52 GMT</pubDate><ttl>60</ttl><item><title>Proxy模式介绍</title><link>http://www.blogjava.net/sodmewuhan/archive/2006/04/27/43653.html</link><dc:creator>面朝大海</dc:creator><author>面朝大海</author><pubDate>Thu, 27 Apr 2006 12:33:00 GMT</pubDate><guid>http://www.blogjava.net/sodmewuhan/archive/2006/04/27/43653.html</guid><wfw:comment>http://www.blogjava.net/sodmewuhan/comments/43653.html</wfw:comment><comments>http://www.blogjava.net/sodmewuhan/archive/2006/04/27/43653.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sodmewuhan/comments/commentRss/43653.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sodmewuhan/services/trackbacks/43653.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0">
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">近来很忙，一直没写</span>
				<span lang="EN-US">blog</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">了，今天晚上有点时间，听了节</span>
				<span lang="EN-US">MSDN</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">上面的一节</span>
				<span lang="EN-US">webCast</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">，讲的就是</span>
				<span lang="EN-US">Proxy</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">模式，本就就是这节课的笔记。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0">
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">学习设计模式也有段时间了，很早也见过</span>
				<span lang="EN-US">Proxy</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">模式的，记得最开始接触</span>
				<span lang="EN-US">Proxy</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">模式还是在著名的</span>
				<span lang="EN-US">JIVE</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">论坛（</span>
				<span lang="EN-US">JIVE</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">中用</span>
				<span lang="EN-US">Proxy</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">来做权限控制）。今天算是一遍复习吧。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0">
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">对复杂的软件系统，人们常常用的一种处理手法是在系统增加一层间接层，得到对系统灵活的、满足特殊要求的解决方案。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0">
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">使用</span>
				<span lang="EN-US">Proxy</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">模式的动机：在</span>
				<span lang="EN-US">OO</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的开发过程中，某些对象的开销很大（如：</span>
				<span lang="EN-US">new</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的开销大、某些对象因为安全的原因不能被客户直接的调用等），如果直接操作这些对象会破坏系统结构。那么，我们就用代理对象来控制对象的访问。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 57pt; TEXT-INDENT: -36pt; mso-list: l0 level1 lfo1; tab-stops: list 57.0pt">
				<span lang="EN-US" style="mso-bidi-font-family: 宋体">
						<span style="mso-list: Ignore">例子，<span style="FONT: 7pt 'Times New Roman'">   </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">一个常见的</span>
				<span lang="EN-US">HR</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">系统：<br /></span>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">using</span>
				<span style="COLOR: #000000"> System;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> Employee<br /><img id="Codehighlighter1_30_149_Open_Image" onclick="this.style.display='none'; Codehighlighter1_30_149_Open_Text.style.display='none'; Codehighlighter1_30_149_Closed_Image.style.display='inline'; Codehighlighter1_30_149_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_30_149_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_30_149_Closed_Text.style.display='none'; Codehighlighter1_30_149_Open_Image.style.display='inline'; Codehighlighter1_30_149_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_30_149_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_30_149_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">double</span>
						<span style="COLOR: #000000"> GetSalary()<br /><img id="Codehighlighter1_60_71_Open_Image" onclick="this.style.display='none'; Codehighlighter1_60_71_Open_Text.style.display='none'; Codehighlighter1_60_71_Closed_Image.style.display='inline'; Codehighlighter1_60_71_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_60_71_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_60_71_Closed_Text.style.display='none'; Codehighlighter1_60_71_Open_Image.style.display='inline'; Codehighlighter1_60_71_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_60_71_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_60_71_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <img src="http://www.blogjava.net/images/dot.gif" />..<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> Report()<br /><img id="Codehighlighter1_96_106_Open_Image" onclick="this.style.display='none'; Codehighlighter1_96_106_Open_Text.style.display='none'; Codehighlighter1_96_106_Closed_Image.style.display='inline'; Codehighlighter1_96_106_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_96_106_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_96_106_Closed_Text.style.display='none'; Codehighlighter1_96_106_Open_Image.style.display='inline'; Codehighlighter1_96_106_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_96_106_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_96_106_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <img src="http://www.blogjava.net/images/dot.gif" />.<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> ApplyVacation()<br /><img id="Codehighlighter1_138_147_Open_Image" onclick="this.style.display='none'; Codehighlighter1_138_147_Open_Text.style.display='none'; Codehighlighter1_138_147_Closed_Image.style.display='inline'; Codehighlighter1_138_147_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_138_147_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_138_147_Closed_Text.style.display='none'; Codehighlighter1_138_147_Open_Image.style.display='inline'; Codehighlighter1_138_147_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_138_147_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_138_147_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <img src="http://www.blogjava.net/images/dot.gif" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> HrSys<br /><img id="Codehighlighter1_164_301_Open_Image" onclick="this.style.display='none'; Codehighlighter1_164_301_Open_Text.style.display='none'; Codehighlighter1_164_301_Closed_Image.style.display='inline'; Codehighlighter1_164_301_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_164_301_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_164_301_Closed_Text.style.display='none'; Codehighlighter1_164_301_Open_Image.style.display='inline'; Codehighlighter1_164_301_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_164_301_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_164_301_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> ProcessEmployee<br /><img id="Codehighlighter1_215_235_Open_Image" onclick="this.style.display='none'; Codehighlighter1_215_235_Open_Text.style.display='none'; Codehighlighter1_215_235_Closed_Image.style.display='inline'; Codehighlighter1_215_235_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_215_235_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_215_235_Closed_Text.style.display='none'; Codehighlighter1_215_235_Open_Image.style.display='inline'; Codehighlighter1_215_235_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        (Employee employee</span>
						<span id="Codehighlighter1_215_235_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
						<span id="Codehighlighter1_215_235_Open_Text">
								<span style="COLOR: #008000">/*</span>
								<span style="COLOR: #008000">该对象和HR系统在同一个地址空间中</span>
								<span style="COLOR: #008000">*/</span>
						</span>
						<span style="COLOR: #000000">)<br /><img id="Codehighlighter1_239_299_Open_Image" onclick="this.style.display='none'; Codehighlighter1_239_299_Open_Text.style.display='none'; Codehighlighter1_239_299_Closed_Image.style.display='inline'; Codehighlighter1_239_299_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_239_299_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_239_299_Closed_Text.style.display='none'; Codehighlighter1_239_299_Open_Image.style.display='inline'; Codehighlighter1_239_299_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_239_299_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_239_299_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        employee.Report();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <img src="http://www.blogjava.net/images/dot.gif" />..<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        employee.ApplyVacation();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">现在要求把</span>
				<span lang="EN-US">
						<font face="Times New Roman">Employee</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">做成</span>
				<span lang="EN-US">
						<font face="Times New Roman">webService</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">，</span>
				<span lang="EN-US">
						<font face="Times New Roman">HR</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">系统通过</span>
				<span lang="EN-US">
						<font face="Times New Roman">webService</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">来调用</span>
				<span lang="EN-US">
						<font face="Times New Roman">Employee</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">对象，代码修改如下：<br /></span>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">using</span>
				<span style="COLOR: #000000"> System;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">interface</span>
				<span style="COLOR: #000000"> IEmployee<br /><img id="Codehighlighter1_35_118_Open_Image" onclick="this.style.display='none'; Codehighlighter1_35_118_Open_Text.style.display='none'; Codehighlighter1_35_118_Closed_Image.style.display='inline'; Codehighlighter1_35_118_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_35_118_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_35_118_Closed_Text.style.display='none'; Codehighlighter1_35_118_Open_Image.style.display='inline'; Codehighlighter1_35_118_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_35_118_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_35_118_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">double</span>
						<span style="COLOR: #000000"> GetSalary();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> Report();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> ApplyVacation();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">运行在internet上面的某台机器</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> Employee : IEmployee<br /><img id="Codehighlighter1_168_287_Open_Image" onclick="this.style.display='none'; Codehighlighter1_168_287_Open_Text.style.display='none'; Codehighlighter1_168_287_Closed_Image.style.display='inline'; Codehighlighter1_168_287_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_168_287_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_168_287_Closed_Text.style.display='none'; Codehighlighter1_168_287_Open_Image.style.display='inline'; Codehighlighter1_168_287_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_168_287_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_168_287_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">double</span>
						<span style="COLOR: #000000"> GetSalary()<br /><img id="Codehighlighter1_198_209_Open_Image" onclick="this.style.display='none'; Codehighlighter1_198_209_Open_Text.style.display='none'; Codehighlighter1_198_209_Closed_Image.style.display='inline'; Codehighlighter1_198_209_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_198_209_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_198_209_Closed_Text.style.display='none'; Codehighlighter1_198_209_Open_Image.style.display='inline'; Codehighlighter1_198_209_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_198_209_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_198_209_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <img src="http://www.blogjava.net/images/dot.gif" />..<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> Report()<br /><img id="Codehighlighter1_234_244_Open_Image" onclick="this.style.display='none'; Codehighlighter1_234_244_Open_Text.style.display='none'; Codehighlighter1_234_244_Closed_Image.style.display='inline'; Codehighlighter1_234_244_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_234_244_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_234_244_Closed_Text.style.display='none'; Codehighlighter1_234_244_Open_Image.style.display='inline'; Codehighlighter1_234_244_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_234_244_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_234_244_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <img src="http://www.blogjava.net/images/dot.gif" />.<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> ApplyVacation()<br /><img id="Codehighlighter1_276_285_Open_Image" onclick="this.style.display='none'; Codehighlighter1_276_285_Open_Text.style.display='none'; Codehighlighter1_276_285_Closed_Image.style.display='inline'; Codehighlighter1_276_285_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_276_285_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_276_285_Closed_Text.style.display='none'; Codehighlighter1_276_285_Open_Image.style.display='inline'; Codehighlighter1_276_285_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_276_285_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_276_285_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <img src="http://www.blogjava.net/images/dot.gif" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">运行在本地的程序中</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> EmployeeProxy : IEmployee<br /><img id="Codehighlighter1_333_627_Open_Image" onclick="this.style.display='none'; Codehighlighter1_333_627_Open_Text.style.display='none'; Codehighlighter1_333_627_Closed_Image.style.display='inline'; Codehighlighter1_333_627_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_333_627_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_333_627_Closed_Text.style.display='none'; Codehighlighter1_333_627_Open_Image.style.display='inline'; Codehighlighter1_333_627_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_333_627_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_333_627_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">double</span>
						<span style="COLOR: #000000"> GetSalary()<br /><img id="Codehighlighter1_363_430_Open_Image" onclick="this.style.display='none'; Codehighlighter1_363_430_Open_Text.style.display='none'; Codehighlighter1_363_430_Closed_Image.style.display='inline'; Codehighlighter1_363_430_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_363_430_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_363_430_Closed_Text.style.display='none'; Codehighlighter1_363_430_Open_Image.style.display='inline'; Codehighlighter1_363_430_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_363_430_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_363_430_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">对对象创建/访问的SOAP封装<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">发送SOAP数据<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">如果有返回值，就对SOAP分析，得到C#数据</span>
								<span style="COLOR: #008000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />
								</span>
								<span style="COLOR: #000000">    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> Report()<br /><img id="Codehighlighter1_457_524_Open_Image" onclick="this.style.display='none'; Codehighlighter1_457_524_Open_Text.style.display='none'; Codehighlighter1_457_524_Closed_Image.style.display='inline'; Codehighlighter1_457_524_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_457_524_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_457_524_Closed_Text.style.display='none'; Codehighlighter1_457_524_Open_Image.style.display='inline'; Codehighlighter1_457_524_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_457_524_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_457_524_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">对对象创建/访问的SOAP封装<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">发送SOAP数据<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">如果有返回值，就对SOAP分析，得到C#数据</span>
								<span style="COLOR: #008000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />
								</span>
								<span style="COLOR: #000000">    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> ApplyVacation()<br /><img id="Codehighlighter1_558_625_Open_Image" onclick="this.style.display='none'; Codehighlighter1_558_625_Open_Text.style.display='none'; Codehighlighter1_558_625_Closed_Image.style.display='inline'; Codehighlighter1_558_625_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_558_625_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_558_625_Closed_Text.style.display='none'; Codehighlighter1_558_625_Open_Image.style.display='inline'; Codehighlighter1_558_625_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_558_625_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_558_625_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">对对象创建/访问的SOAP封装<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">发送SOAP数据<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">如果有返回值，就对SOAP分析，得到C#数据</span>
								<span style="COLOR: #008000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />
								</span>
								<span style="COLOR: #000000">    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> HrSys<br /><img id="Codehighlighter1_641_770_Open_Image" onclick="this.style.display='none'; Codehighlighter1_641_770_Open_Text.style.display='none'; Codehighlighter1_641_770_Closed_Image.style.display='inline'; Codehighlighter1_641_770_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_641_770_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_641_770_Closed_Text.style.display='none'; Codehighlighter1_641_770_Open_Image.style.display='inline'; Codehighlighter1_641_770_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_641_770_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_641_770_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> ProcessEmployee(IEmployee employeeProxy)<br /><img id="Codehighlighter1_698_768_Open_Image" onclick="this.style.display='none'; Codehighlighter1_698_768_Open_Text.style.display='none'; Codehighlighter1_698_768_Closed_Image.style.display='inline'; Codehighlighter1_698_768_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_698_768_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_698_768_Closed_Text.style.display='none'; Codehighlighter1_698_768_Open_Image.style.display='inline'; Codehighlighter1_698_768_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_698_768_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_698_768_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        employeeProxy.Report();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <img src="http://www.blogjava.net/images/dot.gif" />..<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        employeeProxy.ApplyVacation();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US">Proxy</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">使用的要点：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US">1</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">、“增加一层间接层”，是软件系统中常用的手段之一。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US">2</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">、具体的实现中，</span>
				<span lang="EN-US">Proxy</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">有很大差别，有的是简单的“</span>
				<span lang="EN-US">copy-on-write</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">”，有的是对组件模块的抽象代理。在</span>
				<span lang="EN-US">JAVA</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">中常见的</span>
				<span lang="EN-US">SSH</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">架构模式中（</span>
				<span lang="EN-US">struts+spring+hibernate</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">）中，我们可以把</span>
				<span lang="EN-US">spring</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">所在的服务层看成对</span>
				<span lang="EN-US">hiberate</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的代理。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">具体的实现可以参考</span>
				<span lang="EN-US">.NET</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">中的</span>
				<span lang="EN-US">WebService</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的实现。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US">Copy-on-write</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">技术<br /></span>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> App<br /><img id="Codehighlighter1_10_256_Open_Image" onclick="this.style.display='none'; Codehighlighter1_10_256_Open_Text.style.display='none'; Codehighlighter1_10_256_Closed_Image.style.display='inline'; Codehighlighter1_10_256_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_10_256_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_10_256_Closed_Text.style.display='none'; Codehighlighter1_10_256_Open_Image.style.display='inline'; Codehighlighter1_10_256_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_10_256_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_10_256_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">系统在内存中其实是指向同一块内存</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    </span>
						<span style="COLOR: #0000ff">string</span>
						<span style="COLOR: #000000"> s1 </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">Hello</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">; </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">不可在修改</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">    </span>
						<span style="COLOR: #0000ff">string</span>
						<span style="COLOR: #000000"> s2 </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">Hello</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">; </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">不可在修改<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">s1.ToUpper(); </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">s1不会产生任何改变</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    stringBulider sb1 </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">new</span>
						<span style="COLOR: #000000"> stringBulider(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">Hello</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    stringBulider sb2 </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">new</span>
						<span style="COLOR: #000000"> stringBulider(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">Hello</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    sb1.replace(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">H</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">,</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">L</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">); </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">可以修改成功</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />
						</span>
						<span style="COLOR: #000000">}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US">sb1.replace("H","L");</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">系统做的动作是，</span>
				<span lang="EN-US">sb1</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的代理对象先拷贝</span>
				<span lang="EN-US">”Hello”</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">字符串，然后用“</span>
				<span lang="EN-US">L</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">”替换“</span>
				<span lang="EN-US">H</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">”，</span>
				<span lang="EN-US">sb1</span>
				<span style="FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的代理对象重新指向新的对象。</span>
		</p>
<img src ="http://www.blogjava.net/sodmewuhan/aggbug/43653.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sodmewuhan/" target="_blank">面朝大海</a> 2006-04-27 20:33 <a href="http://www.blogjava.net/sodmewuhan/archive/2006/04/27/43653.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转贴]有效编写软件的75条建议</title><link>http://www.blogjava.net/sodmewuhan/archive/2006/04/15/41264.html</link><dc:creator>面朝大海</dc:creator><author>面朝大海</author><pubDate>Sat, 15 Apr 2006 12:38:00 GMT</pubDate><guid>http://www.blogjava.net/sodmewuhan/archive/2006/04/15/41264.html</guid><wfw:comment>http://www.blogjava.net/sodmewuhan/comments/41264.html</wfw:comment><comments>http://www.blogjava.net/sodmewuhan/archive/2006/04/15/41264.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sodmewuhan/comments/commentRss/41264.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sodmewuhan/services/trackbacks/41264.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1. 				你们的项目组使用源代码管理工具了么？										    				应该用。				VSS				、				CVS				、				PVCS				、				ClearCase				、				CCC/Harvest				、				FireFly				都可以。我的选择是				VSS				。				...&nbsp;&nbsp;<a href='http://www.blogjava.net/sodmewuhan/archive/2006/04/15/41264.html'>阅读全文</a><img src ="http://www.blogjava.net/sodmewuhan/aggbug/41264.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sodmewuhan/" target="_blank">面朝大海</a> 2006-04-15 20:38 <a href="http://www.blogjava.net/sodmewuhan/archive/2006/04/15/41264.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>