﻿<?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/dayue/</link><description>像疯子一样去战斗！</description><language>zh-cn</language><lastBuildDate>Thu, 09 Apr 2026 21:58:47 GMT</lastBuildDate><pubDate>Thu, 09 Apr 2026 21:58:47 GMT</pubDate><ttl>60</ttl><item><title>关于Eclipse首选项的几点问题</title><link>http://www.blogjava.net/dayue/archive/2007/08/28/140677.html</link><dc:creator>dayue</dc:creator><author>dayue</author><pubDate>Tue, 28 Aug 2007 14:17:00 GMT</pubDate><guid>http://www.blogjava.net/dayue/archive/2007/08/28/140677.html</guid><wfw:comment>http://www.blogjava.net/dayue/comments/140677.html</wfw:comment><comments>http://www.blogjava.net/dayue/archive/2007/08/28/140677.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dayue/comments/commentRss/140677.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dayue/services/trackbacks/140677.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 今天调试一个bug，迷惑了很久。最后发现是关于首选项取值存值问题。<br>&nbsp;&nbsp; 这里ps为IPreferenceStore对象.</p>
<p>&nbsp;&nbsp; ps.getString(XXX_KEY)是首选查找首选项 ，如果取出的值为空，如果有default值的话则执行ps.getDefault(XXX_KEY)。</p>
<p>&nbsp;&nbsp; ps.setValue(XXX_KEY, "XXX")时首先和default中的XXX_KEY比较，如果不同的话才put进去，否则就删除。这也是我今天这个bug的原因。修改办法是用putValue函数来代替setValue. <br><br>有什么说的不对的地方欢迎批评指正.</p>
<img src ="http://www.blogjava.net/dayue/aggbug/140677.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dayue/" target="_blank">dayue</a> 2007-08-28 22:17 <a href="http://www.blogjava.net/dayue/archive/2007/08/28/140677.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]eclipse插件中取得路径的方法</title><link>http://www.blogjava.net/dayue/archive/2007/05/24/119784.html</link><dc:creator>dayue</dc:creator><author>dayue</author><pubDate>Thu, 24 May 2007 10:07:00 GMT</pubDate><guid>http://www.blogjava.net/dayue/archive/2007/05/24/119784.html</guid><wfw:comment>http://www.blogjava.net/dayue/comments/119784.html</wfw:comment><comments>http://www.blogjava.net/dayue/archive/2007/05/24/119784.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dayue/comments/commentRss/119784.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dayue/services/trackbacks/119784.html</trackback:ping><description><![CDATA[从插件中获得绝对路径：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<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>Test<span style="COLOR: #000000">Plugin.getDefault().getStateLocation().makeAbsolute().toFile().getAbsolutePath());</span></div>
<p>通过文件得到Project：</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: #000000">IProject project </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> ((IFile)o).getProject();</span></div>
<p>通过文件得到全路径：</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: #000000">String path </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> ((IFile)o).getLocation().makeAbsolute().toFile().getAbsolutePath();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
<p>得到整个Workspace的根：</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: #000000">IWorkspaceRoot root </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> ResourcesPlugin.getWorkspace().getRoot();</span></div>
<p>从根来查找资源：</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: #000000">IResource resource </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> root.findMember(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Path(containerName));</span></div>
<p><br>从Bundle来查找资源：</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: #000000">Bundle bundle </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Platform.getBundle(pluginId);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>URL fullPathString </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> BundleUtility.find(bundle, filePath);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
<p><span class=tpc_content>得到Appliaction workspace：</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: #000000">Platform.asLocalURL(PRODUCT_BUNDLE.getEntry(</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">)).getPath()).getAbsolutePath();</span></div>
<br>得到runtimeworkspace：<br>&nbsp;&nbsp;
<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: #000000">Platform.getInstanceLocation().getURL().getPath();</span></div>
<br>从编辑器来获得编辑文件<br>
<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: #000000">IEditorPart editor </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> ((DefaultEditDomain)(parent.getViewer().getEditDomain())).getEditorPart();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>IEditorInput input </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> editor.getEditorInput();<br></span><span style="COLOR: #0000ff">&nbsp;&nbsp; if</span><span style="COLOR: #000000">(input </span><span style="COLOR: #0000ff">instanceof</span><span style="COLOR: #000000"> IFileEditorInput)</span><span 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><span style="COLOR: #000000">{<br>&nbsp;&nbsp;&nbsp;&nbsp; IFile file </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> ((IFileEditorInput)input).getFile();<br>&nbsp;&nbsp; }</span></span></div>
<img src ="http://www.blogjava.net/dayue/aggbug/119784.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dayue/" target="_blank">dayue</a> 2007-05-24 18:07 <a href="http://www.blogjava.net/dayue/archive/2007/05/24/119784.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>css基础知识</title><link>http://www.blogjava.net/dayue/archive/2007/05/08/116009.html</link><dc:creator>dayue</dc:creator><author>dayue</author><pubDate>Tue, 08 May 2007 09:48:00 GMT</pubDate><guid>http://www.blogjava.net/dayue/archive/2007/05/08/116009.html</guid><wfw:comment>http://www.blogjava.net/dayue/comments/116009.html</wfw:comment><comments>http://www.blogjava.net/dayue/archive/2007/05/08/116009.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dayue/comments/commentRss/116009.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dayue/services/trackbacks/116009.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;CSS 意思就是 叠层样式表<strong>C</strong>ascading <strong>S</strong>tyle <strong>S</strong>heets ，样式定义了HTML元素怎样去显示，样式一般存储在样式表中，外部样式表存储在CSS文件中。使用CSS，你的HTML文档可以用不同的样式输出来显示。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HTML标签起初被设计成为定义文档的内容。通过使用像&lt;h1&gt;,&lt;p&gt;,&lt;table&gt;这样的标签他们应该表达的是"这是一个标题","这是一个段落","这是一张表格",而布局该由浏览器来处理并非使用格式化标签. 作为两大浏览器 - 网景 和 IE - 不断地将新的HTML标签和属性(像&lt;font&gt;标签和颜色属性)添加到原来的HTML规格中,这让建立清晰的HTML文档内容并从形式中分离出来变的越来越困难.为了解决这个难题,W3C 这个非赢利的,建立标准的组织,为HTML4.0增加了样式。所有主流浏览器都支持样式表。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 样式表定义元素怎样去显示,就像在HTML3.2中字体标签和颜色属性一般保存在一个外部的.css文件一样.外部样式表能够让你改变所有出现在你WEB中的外观和布局,而仅仅通过编辑一个单独的CSS文档.(原理就是一动多变)。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>当多于一种的样式指定一HTML元素时使用怎样的样式呢?<br></strong>
<ol>
    <li>浏览器默认
    <li>外部样式表
    <li>内嵌样式表(在&lt;head&gt;标签内)
    <li>行内样式(在一HTML元素内) （最高优先级）</li>
</ol>
<img src ="http://www.blogjava.net/dayue/aggbug/116009.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dayue/" target="_blank">dayue</a> 2007-05-08 17:48 <a href="http://www.blogjava.net/dayue/archive/2007/05/08/116009.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>面向对象设计（OOD）原则</title><link>http://www.blogjava.net/dayue/archive/2007/04/30/114789.html</link><dc:creator>dayue</dc:creator><author>dayue</author><pubDate>Mon, 30 Apr 2007 07:27:00 GMT</pubDate><guid>http://www.blogjava.net/dayue/archive/2007/04/30/114789.html</guid><wfw:comment>http://www.blogjava.net/dayue/comments/114789.html</wfw:comment><comments>http://www.blogjava.net/dayue/archive/2007/04/30/114789.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dayue/comments/commentRss/114789.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dayue/services/trackbacks/114789.html</trackback:ping><description><![CDATA[<ol>
    <li>单一职责原则（SRP）：一个类应当只有一个改变的原因，类只需要知道一件事情，它们应当有一个单独的职责，要点就是当一个类需要改变时，应当只有一个原因。</li>
    <li>开放-封闭原则（OCP）：软件实体(类、模块、函数等)应当为扩展而开放，又为修改而封闭。这个原则有一个相当详细的定义，但是一个简单的意思是：你应当能够改变一个模块的周边环境而无须改变模块本身。</li>
    <li>Liskov替换原则(LSP)：子类型(subtypes)必须是为它们的基类型(base types)可替代的。</li>
    <li>依存关系倒置原则(DIP) ：A．高层模块应当不依赖低层模块，它们应当依赖于抽象。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;B．抽象应当不依赖于细节，细节应当依赖于抽象。<br>更好的描述是：不要依赖那些容易变化的具体类。如果你要继承一个类，从一个抽象类继承吧。如果你要持有一个类的引用，从一个抽象的类引用吧。如果你要调用一个函数，从一个抽象的函数调用吧。</li>
    <li>接口隔离原则（ISP）：客户不应当依赖那些它们根本不用的方法。</li>
</ol>
<p>总结：<br>五个简单的原则是：<br>1、SRP－－一个类应当只有一个发生变化的原因。 <br>2、OCP――应当能够改变一个类的环境，而无须改变类本身。<br>3、LSP――避免造成派生类的方法非法或退化，一个基类的用户应当不需要知道这个派生类。<br>4、DIP ――用依赖于接口和抽象类来替代依赖容易变化的具体类。<br>5、ISP――给一个对象的每一个用户一个接口，这个接口仅有用户需要的方法。<br></p>
<p>&nbsp; </p>
<img src ="http://www.blogjava.net/dayue/aggbug/114789.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dayue/" target="_blank">dayue</a> 2007-04-30 15:27 <a href="http://www.blogjava.net/dayue/archive/2007/04/30/114789.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>设计模式之命令（Command）模式 笔记</title><link>http://www.blogjava.net/dayue/archive/2007/04/30/114768.html</link><dc:creator>dayue</dc:creator><author>dayue</author><pubDate>Mon, 30 Apr 2007 06:13:00 GMT</pubDate><guid>http://www.blogjava.net/dayue/archive/2007/04/30/114768.html</guid><wfw:comment>http://www.blogjava.net/dayue/comments/114768.html</wfw:comment><comments>http://www.blogjava.net/dayue/archive/2007/04/30/114768.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dayue/comments/commentRss/114768.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dayue/services/trackbacks/114768.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 命令模式是一个行为型模式，允许你创造一个对象的命令然后在需要时候可以执行。当你想创造一个undo/redo，log操作或者在稍晚时候执行命令时这个模式是有用的。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在这个模式里一个命令接口是必需的。对一个命令对象来说，它必须事先实现这个命令的方法。下面是一个简单的命令接口，有一个方法需要实现执行的。<br>
<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 id=Codehighlighter1_24_60_Open_Image onclick="this.style.display='none'; Codehighlighter1_24_60_Open_Text.style.display='none'; Codehighlighter1_24_60_Closed_Image.style.display='inline'; Codehighlighter1_24_60_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_24_60_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_24_60_Closed_Text.style.display='none'; Codehighlighter1_24_60_Open_Image.style.display='inline'; Codehighlighter1_24_60_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;Command</span><span id=Codehighlighter1_24_60_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_24_60_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;execute();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所有被命令的类必须实现这个命令接口。下面是一个简单的命令：当执行时控制台打印"hello world"。<br>
<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 id=Codehighlighter1_44_126_Open_Image onclick="this.style.display='none'; Codehighlighter1_44_126_Open_Text.style.display='none'; Codehighlighter1_44_126_Closed_Image.style.display='inline'; Codehighlighter1_44_126_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_44_126_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_44_126_Closed_Text.style.display='none'; Codehighlighter1_44_126_Open_Image.style.display='inline'; Codehighlighter1_44_126_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;HelloCommand&nbsp;</span><span style="COLOR: #0000ff">implements</span><span style="COLOR: #000000">&nbsp;Command</span><span id=Codehighlighter1_44_126_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_44_126_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_76_124_Open_Image onclick="this.style.display='none'; Codehighlighter1_76_124_Open_Text.style.display='none'; Codehighlighter1_76_124_Closed_Image.style.display='inline'; Codehighlighter1_76_124_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_76_124_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_76_124_Closed_Text.style.display='none'; Codehighlighter1_76_124_Open_Image.style.display='inline'; Codehighlighter1_76_124_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;execute()</span><span id=Codehighlighter1_76_124_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_76_124_Open_Text><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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Hello&nbsp;World</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;你可以创建一个HelloCommand的实例然后执行这个方法。
<img src ="http://www.blogjava.net/dayue/aggbug/114768.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dayue/" target="_blank">dayue</a> 2007-04-30 14:13 <a href="http://www.blogjava.net/dayue/archive/2007/04/30/114768.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在rcp中获得父Shell的几种方法</title><link>http://www.blogjava.net/dayue/archive/2007/04/23/112941.html</link><dc:creator>dayue</dc:creator><author>dayue</author><pubDate>Mon, 23 Apr 2007 06:00:00 GMT</pubDate><guid>http://www.blogjava.net/dayue/archive/2007/04/23/112941.html</guid><wfw:comment>http://www.blogjava.net/dayue/comments/112941.html</wfw:comment><comments>http://www.blogjava.net/dayue/archive/2007/04/23/112941.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dayue/comments/commentRss/112941.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dayue/services/trackbacks/112941.html</trackback:ping><description><![CDATA[在实现了<font face="Times New Roman">IWorkbenchWindowActionDelegate接口的类中：<br>
<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">private</span><span style="COLOR: #000000">&nbsp;IWorkbenchWindow&nbsp;window;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img id=Codehighlighter1_76_103_Open_Image onclick="this.style.display='none'; Codehighlighter1_76_103_Open_Text.style.display='none'; Codehighlighter1_76_103_Closed_Image.style.display='inline'; Codehighlighter1_76_103_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_76_103_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_76_103_Closed_Text.style.display='none'; Codehighlighter1_76_103_Open_Image.style.display='inline'; Codehighlighter1_76_103_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;init(IWorkbenchWindow&nbsp;window)&nbsp;</span><span id=Codehighlighter1_76_103_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_76_103_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.window&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;window;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_137_249_Open_Image onclick="this.style.display='none'; Codehighlighter1_137_249_Open_Text.style.display='none'; Codehighlighter1_137_249_Closed_Image.style.display='inline'; Codehighlighter1_137_249_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_137_249_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_137_249_Closed_Text.style.display='none'; Codehighlighter1_137_249_Open_Image.style.display='inline'; Codehighlighter1_137_249_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;run(IAction&nbsp;action)&nbsp;</span><span id=Codehighlighter1_137_249_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_137_249_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;Shell&nbsp;parentShell&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;window.getShell();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;MyDialog&nbsp;dialog&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;MyDialog(parentShell,&nbsp;<img src="http://www.blogjava.net/Images/dot.gif">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif">&nbsp;etc&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"><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></div>
</font>在实现了<font face="Times New Roman"><font face="Courier New">IObjectActionDelegate</font> 接口的类中：<br>
<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">private</span><span style="COLOR: #000000">&nbsp;IWorkbenchPart&nbsp;targetPart;<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">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setActivePart(IAction&nbsp;action,&nbsp;IWorkbenchPart&nbsp;targetPart)<br><img id=Codehighlighter1_105_140_Open_Image onclick="this.style.display='none'; Codehighlighter1_105_140_Open_Text.style.display='none'; Codehighlighter1_105_140_Closed_Image.style.display='inline'; Codehighlighter1_105_140_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_105_140_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_105_140_Closed_Text.style.display='none'; Codehighlighter1_105_140_Open_Image.style.display='inline'; Codehighlighter1_105_140_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_105_140_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_105_140_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.targetPart&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;targetPart;<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 id=Codehighlighter1_175_289_Open_Image onclick="this.style.display='none'; Codehighlighter1_175_289_Open_Text.style.display='none'; Codehighlighter1_175_289_Closed_Image.style.display='inline'; Codehighlighter1_175_289_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_175_289_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_175_289_Closed_Text.style.display='none'; Codehighlighter1_175_289_Open_Image.style.display='inline'; Codehighlighter1_175_289_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;run(IAction&nbsp;action)&nbsp;</span><span id=Codehighlighter1_175_289_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_175_289_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;IWorkbenchPartSite&nbsp;site&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;targetPart.getSite();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;MyDialog&nbsp;dialog&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;MyDialog(site,&nbsp;<img src="http://www.blogjava.net/Images/dot.gif">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif">&nbsp;etc&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"><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></div>
<font face="Courier New">IViewPart</font> 或者<tt>IEditorPart</tt> ：
<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: #000000">IShellProvider&nbsp;shellProvider&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;viewOrEditor.getSite();</span></div>
<font face="Courier New">PlatformUI：<br>
<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: #000000">Shell&nbsp;parentShell&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();</span></div>
</font><br><font face="Courier New">Display</font> ：<br>
<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: #000000">Shell&nbsp;parentShell&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Display.getDefault().getActiveShell();</span></div>
<br><br>以上各种方法对于获取其它的一些rcp中的重要对象也都有借鉴意义。<br></font>
<img src ="http://www.blogjava.net/dayue/aggbug/112941.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dayue/" target="_blank">dayue</a> 2007-04-23 14:00 <a href="http://www.blogjava.net/dayue/archive/2007/04/23/112941.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>设计模式之工厂方法（factory method） 笔记</title><link>http://www.blogjava.net/dayue/archive/2007/04/18/111595.html</link><dc:creator>dayue</dc:creator><author>dayue</author><pubDate>Wed, 18 Apr 2007 05:48:00 GMT</pubDate><guid>http://www.blogjava.net/dayue/archive/2007/04/18/111595.html</guid><wfw:comment>http://www.blogjava.net/dayue/comments/111595.html</wfw:comment><comments>http://www.blogjava.net/dayue/archive/2007/04/18/111595.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dayue/comments/commentRss/111595.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dayue/services/trackbacks/111595.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 工厂方法设计模式是一种使用工厂原则的创造型模式。工厂原则就是 通过调用一个方法，这个方法创造一个对象的实例然后将它返回。通过向这个方法传递参数来决定返回哪个类型的对象。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 工厂方法设计模式使用继承来决定返回哪个对象。基础的创造类是抽象的。而具体的创造类继承这个基类。工厂方法在基类中声明。如果工厂方法是抽象的，那么所有继承这个类的类都必须有这个方法。如果不是，则可以根据需要选择覆盖它与否。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当一个类想实例化其中一个具体类的实例时，这个类就可以通过调用具体类的工厂方法来生成正确的对象。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 举例来说，假设我们有两个类，Product1和Product2。为了能接收到这两个类任何一个的实例，我们必须让他们继承或实现相同的类或接口。我们创造一个叫做Creator的抽象类。如下：<br>
<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 id=Codehighlighter1_29_65_Open_Image onclick="this.style.display='none'; Codehighlighter1_29_65_Open_Text.style.display='none'; Codehighlighter1_29_65_Closed_Image.style.display='inline'; Codehighlighter1_29_65_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_29_65_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_29_65_Closed_Text.style.display='none'; Codehighlighter1_29_65_Open_Image.style.display='inline'; Codehighlighter1_29_65_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">abstract</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Creator</span><span id=Codehighlighter1_29_65_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_29_65_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">abstract</span><span style="COLOR: #000000">&nbsp;getProduct();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">&nbsp;</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现在我们创造两个类继承Creator,叫做Product1Creator和Product2Creator。每一个都有一个getProduct方法。<br>例如Product1Creator：<br>
<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 id=Codehighlighter1_44_143_Open_Image onclick="this.style.display='none'; Codehighlighter1_44_143_Open_Text.style.display='none'; Codehighlighter1_44_143_Closed_Image.style.display='inline'; Codehighlighter1_44_143_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_44_143_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_44_143_Closed_Text.style.display='none'; Codehighlighter1_44_143_Open_Image.style.display='inline'; Codehighlighter1_44_143_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Product1Creator&nbsp;</span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000">&nbsp;Creator</span><span id=Codehighlighter1_44_143_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_44_143_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top><br><img id=Codehighlighter1_85_141_Open_Image onclick="this.style.display='none'; Codehighlighter1_85_141_Open_Text.style.display='none'; Codehighlighter1_85_141_Closed_Image.style.display='inline'; Codehighlighter1_85_141_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_85_141_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_85_141_Closed_Text.style.display='none'; Codehighlighter1_85_141_Open_Image.style.display='inline'; Codehighlighter1_85_141_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;Product&nbsp;getProduct()</span><span id=Codehighlighter1_85_141_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_85_141_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Product1();<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></div>
<img src ="http://www.blogjava.net/dayue/aggbug/111595.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dayue/" target="_blank">dayue</a> 2007-04-18 13:48 <a href="http://www.blogjava.net/dayue/archive/2007/04/18/111595.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>设计模式之单例（Singleton） 笔记</title><link>http://www.blogjava.net/dayue/archive/2007/04/18/111514.html</link><dc:creator>dayue</dc:creator><author>dayue</author><pubDate>Wed, 18 Apr 2007 02:17:00 GMT</pubDate><guid>http://www.blogjava.net/dayue/archive/2007/04/18/111514.html</guid><wfw:comment>http://www.blogjava.net/dayue/comments/111514.html</wfw:comment><comments>http://www.blogjava.net/dayue/archive/2007/04/18/111514.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dayue/comments/commentRss/111514.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dayue/services/trackbacks/111514.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span>单例模式是最简单的一种设计模式，它是创造型的。一个单例类仅允许他的一个实例被初始化。它检查一个实例是否已经被创建，如果是则返回这个实例。下面是一个单例类的基本结构：<br>
<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"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000">&nbsp;dp.singleton;<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img id=Codehighlighter1_46_237_Open_Image onclick="this.style.display='none'; Codehighlighter1_46_237_Open_Text.style.display='none'; Codehighlighter1_46_237_Closed_Image.style.display='inline'; Codehighlighter1_46_237_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_46_237_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_46_237_Closed_Text.style.display='none'; Codehighlighter1_46_237_Open_Image.style.display='inline'; Codehighlighter1_46_237_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Singleton&nbsp;</span><span id=Codehighlighter1_46_237_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_46_237_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;Singleton&nbsp;singleton;<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img id=Codehighlighter1_105_111_Open_Image onclick="this.style.display='none'; Codehighlighter1_105_111_Open_Text.style.display='none'; Codehighlighter1_105_111_Closed_Image.style.display='inline'; Codehighlighter1_105_111_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_105_111_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_105_111_Closed_Text.style.display='none'; Codehighlighter1_105_111_Open_Image.style.display='inline'; Codehighlighter1_105_111_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;Singleton()</span><span id=Codehighlighter1_105_111_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_105_111_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img id=Codehighlighter1_153_233_Open_Image onclick="this.style.display='none'; Codehighlighter1_153_233_Open_Text.style.display='none'; Codehighlighter1_153_233_Closed_Image.style.display='inline'; Codehighlighter1_153_233_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_153_233_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_153_233_Closed_Text.style.display='none'; Codehighlighter1_153_233_Open_Image.style.display='inline'; Codehighlighter1_153_233_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;Singleton&nbsp;getInstance()</span><span id=Codehighlighter1_153_233_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_153_233_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img id=Codehighlighter1_176_210_Open_Image onclick="this.style.display='none'; Codehighlighter1_176_210_Open_Text.style.display='none'; Codehighlighter1_176_210_Closed_Image.style.display='inline'; Codehighlighter1_176_210_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_176_210_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_176_210_Closed_Text.style.display='none'; Codehighlighter1_176_210_Open_Image.style.display='inline'; Codehighlighter1_176_210_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(singleton</span><span style="COLOR: #000000">==</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)</span><span id=Codehighlighter1_176_210_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_176_210_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;singleton</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Singleton();<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;singleton;<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;<br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
</span>在这个类中，有一个private static 的域，构造函数被设为私有的，这样调用它的类就不能使用构造器来创建它的一个实例。从一个单例类中取得一个实例的唯一办法是通过public static getInstance()方法。通过以下方法：
<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: #000000">Singleton&nbsp;instance</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">Singleton.getInstance();</span></div>
这个 getInstance()通过测试实例与是否为空来检查这个类的唯一实例是否被创建，如果是空的，则创建一个实例，如果非空，则返回这个已经存在的实例，一旦一个实例被创建了，那么 getInstance()这个方法就返回这个实例。<br><br>另一种稍微有些不同的实现单例类的方法是将域声明改为<br>
<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">private</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">final</span><span style="COLOR: #000000">&nbsp;Singleton&nbsp;singleton</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Singleton();</span></div>
这种方法总是创建一个实例。
<img src ="http://www.blogjava.net/dayue/aggbug/111514.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dayue/" target="_blank">dayue</a> 2007-04-18 10:17 <a href="http://www.blogjava.net/dayue/archive/2007/04/18/111514.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>发现了一个好玩的插件PatternBox</title><link>http://www.blogjava.net/dayue/archive/2007/04/12/110042.html</link><dc:creator>dayue</dc:creator><author>dayue</author><pubDate>Wed, 11 Apr 2007 20:06:00 GMT</pubDate><guid>http://www.blogjava.net/dayue/archive/2007/04/12/110042.html</guid><wfw:comment>http://www.blogjava.net/dayue/comments/110042.html</wfw:comment><comments>http://www.blogjava.net/dayue/archive/2007/04/12/110042.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dayue/comments/commentRss/110042.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dayue/services/trackbacks/110042.html</trackback:ping><description><![CDATA[Design Pattern Editor Plugin for Eclipse<br>可以通过选择模版来生成对应模式的java代码，倒不失为一个学习设计模式的好方法。<br>
<p><br>越来越觉得eclipse以及各方开发的插件的强大了，好像潜意识里需要什么东西，在某一天自己就会蹦出来这样一个插件。 </p>
<img src ="http://www.blogjava.net/dayue/aggbug/110042.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dayue/" target="_blank">dayue</a> 2007-04-12 04:06 <a href="http://www.blogjava.net/dayue/archive/2007/04/12/110042.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网上收集的设计模式资料 全部转贴</title><link>http://www.blogjava.net/dayue/archive/2007/04/12/110041.html</link><dc:creator>dayue</dc:creator><author>dayue</author><pubDate>Wed, 11 Apr 2007 19:53:00 GMT</pubDate><guid>http://www.blogjava.net/dayue/archive/2007/04/12/110041.html</guid><wfw:comment>http://www.blogjava.net/dayue/comments/110041.html</wfw:comment><comments>http://www.blogjava.net/dayue/archive/2007/04/12/110041.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dayue/comments/commentRss/110041.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dayue/services/trackbacks/110041.html</trackback:ping><description><![CDATA[<table class=overflow>
    <tbody>
        <tr>
            <td vAlign=top height=150><span style="COLOR: #00ff00">设计模式(Design Patterns)笔记之一：Abstract Factory</span><br><br>定义：提供一个创建一系列相关或相互依赖对象的接口，而无需指定它们具体的类。提供创建对象的接。<br><br>工厂模式是我们最常用的模式，是用来创建对象的，它就相当于创建对象的new。<br>例如我们有一个类Example,我们要创建Example的对象:<br><br>
            <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: #000000">Example&nbsp;example</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Example();<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>Example&nbsp;example</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Example(参数);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
            <br>如果创建Example时做的事情不是如赋值这样简单的事,可能是很长一段代码,如果也写入构造函数中,那明显的就违背了面向对象的原则.<br>我们需要将创建实例的责任与使用实例的责任分开, 使得<br><br>
            <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: #000000">Example&nbsp;example</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Example(参数);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
            <br>就是简单的责任:使用Example这个实例;而创建Example的任务就交给了Factory工厂模式.<br><br>按照传统方法，我们如果需要继承Example类，生成MyExample，就需要定义Example为Interface，然后，不断继承这个Interface，生成许多子类，造成以后代码维护是如此的困难。<br><br>如果，我们开始就采用了工厂模式，也许就没有这么多的烦恼了。<br><br>我们生成一个Factory，它专门负责生成Example的实例。<br>
            <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 id=Codehighlighter1_21_207_Open_Image onclick="this.style.display='none'; Codehighlighter1_21_207_Open_Text.style.display='none'; Codehighlighter1_21_207_Closed_Image.style.display='inline'; Codehighlighter1_21_207_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_21_207_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_21_207_Closed_Text.style.display='none'; Codehighlighter1_21_207_Open_Image.style.display='inline'; Codehighlighter1_21_207_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Factory&nbsp;</span><span id=Codehighlighter1_21_207_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_21_207_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_63_205_Open_Image onclick="this.style.display='none'; Codehighlighter1_63_205_Open_Text.style.display='none'; Codehighlighter1_63_205_Closed_Image.style.display='inline'; Codehighlighter1_63_205_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_63_205_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_63_205_Closed_Text.style.display='none'; Codehighlighter1_63_205_Open_Image.style.display='inline'; Codehighlighter1_63_205_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;Example&nbsp;getIntance()&nbsp;</span><span id=Codehighlighter1_63_205_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_63_205_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"><img src="http://www.blogjava.net/Images/dot.gif"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(flag&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;MyExample();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(flag&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;YourExample();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</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>
            <br>然后，那么在你的程序中,如果要实例化MyExample时.就使用<br><br>
            <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: #000000">Example&nbsp;example</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">Factory.getIntance();</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">还有其它标志，不具体写了。<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
            <br>具体使用：<br>工厂模式有以下三种：<br>1. 简单工厂(Simple Factory)<br>2. 工厂方法(Factory Method)；<br>3. 抽象工厂(Abstract Factory)。<br><br>我们先看一段代码<br>
            <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 id=Codehighlighter1_29_112_Open_Image onclick="this.style.display='none'; Codehighlighter1_29_112_Open_Text.style.display='none'; Codehighlighter1_29_112_Closed_Image.style.display='inline'; Codehighlighter1_29_112_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_29_112_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_29_112_Closed_Text.style.display='none'; Codehighlighter1_29_112_Open_Image.style.display='inline'; Codehighlighter1_29_112_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">abstract</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Factory</span><span id=Codehighlighter1_29_112_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_29_112_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">&nbsp;</span><span style="COLOR: #0000ff">abstract</span><span style="COLOR: #000000">&nbsp;MyExample&nbsp;creator();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>　　</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">abstract</span><span style="COLOR: #000000">&nbsp;YourExample&nbsp;creator();&nbsp;<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 id=Codehighlighter1_156_252_Open_Image onclick="this.style.display='none'; Codehighlighter1_156_252_Open_Text.style.display='none'; Codehighlighter1_156_252_Closed_Image.style.display='inline'; Codehighlighter1_156_252_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_156_252_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_156_252_Closed_Text.style.display='none'; Codehighlighter1_156_252_Open_Image.style.display='inline'; Codehighlighter1_156_252_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;FirstFactory&nbsp;</span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000">&nbsp;Factory</span><span id=Codehighlighter1_156_252_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_156_252_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_186_202_Open_Image onclick="this.style.display='none'; Codehighlighter1_186_202_Open_Text.style.display='none'; Codehighlighter1_186_202_Closed_Image.style.display='inline'; Codehighlighter1_186_202_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_186_202_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_186_202_Closed_Text.style.display='none'; Codehighlighter1_186_202_Open_Image.style.display='inline'; Codehighlighter1_186_202_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>　　</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;MyExample&nbsp;creator()</span><span id=Codehighlighter1_186_202_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_186_202_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"><img src="http://www.blogjava.net/Images/dot.gif">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>　　}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_234_250_Open_Image onclick="this.style.display='none'; Codehighlighter1_234_250_Open_Text.style.display='none'; Codehighlighter1_234_250_Closed_Image.style.display='inline'; Codehighlighter1_234_250_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_234_250_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_234_250_Closed_Text.style.display='none'; Codehighlighter1_234_250_Open_Image.style.display='inline'; Codehighlighter1_234_250_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>　　</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;YourExample&nbsp;creator()</span><span id=Codehighlighter1_234_250_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_250_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"><img src="http://www.blogjava.net/Images/dot.gif">&nbsp;<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 id=Codehighlighter1_297_393_Open_Image onclick="this.style.display='none'; Codehighlighter1_297_393_Open_Text.style.display='none'; Codehighlighter1_297_393_Closed_Image.style.display='inline'; Codehighlighter1_297_393_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_297_393_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_297_393_Closed_Text.style.display='none'; Codehighlighter1_297_393_Open_Image.style.display='inline'; Codehighlighter1_297_393_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;SecondFactory&nbsp;</span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000">&nbsp;Factory</span><span id=Codehighlighter1_297_393_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_297_393_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_327_343_Open_Image onclick="this.style.display='none'; Codehighlighter1_327_343_Open_Text.style.display='none'; Codehighlighter1_327_343_Closed_Image.style.display='inline'; Codehighlighter1_327_343_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_327_343_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_327_343_Closed_Text.style.display='none'; Codehighlighter1_327_343_Open_Image.style.display='inline'; Codehighlighter1_327_343_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>　　</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;MyExample&nbsp;creator()</span><span id=Codehighlighter1_327_343_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_327_343_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"><img src="http://www.blogjava.net/Images/dot.gif">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>　　}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_375_391_Open_Image onclick="this.style.display='none'; Codehighlighter1_375_391_Open_Text.style.display='none'; Codehighlighter1_375_391_Closed_Image.style.display='inline'; Codehighlighter1_375_391_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_375_391_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_375_391_Closed_Text.style.display='none'; Codehighlighter1_375_391_Open_Image.style.display='inline'; Codehighlighter1_375_391_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>　　</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;YourExample&nbsp;creator()</span><span id=Codehighlighter1_375_391_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_375_391_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"><img src="http://www.blogjava.net/Images/dot.gif">&nbsp;<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>
            <br>这里，我们需要创建多个对象，复杂性提高，于是需要采用Abstract Factory来封装共同属性和方法，而将不同的属性和方法通过子类来实现。<br><br>简而言之，工厂模式的目的就是用来实现实例分发。<br><br>工厂模式中几种类型的一些差别：<br>简单工厂模式是根据参数来决定产生实例；<br>简单工厂模式, 核心是一个实类；<br>工厂方法模式的核心是一个抽象工厂类；<br>工厂方法模式可以允许很多实的工厂类从抽象工厂类继承下来, 从而可以在实际上成为多个简单工厂模式的综合；<br>工厂方法一般只创建一个实例，而Abstract Factory创建多个实例。<br></td>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/dayue/aggbug/110041.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dayue/" target="_blank">dayue</a> 2007-04-12 03:53 <a href="http://www.blogjava.net/dayue/archive/2007/04/12/110041.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>