﻿<?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>C++博客-静流水-随笔分类-Design Patterns</title><link>http://www.cppblog.com/GlideLiu/category/2010.html</link><description>易-化繁为简</description><language>zh-cn</language><lastBuildDate>Tue, 20 May 2008 09:34:15 GMT</lastBuildDate><pubDate>Tue, 20 May 2008 09:34:15 GMT</pubDate><ttl>60</ttl><item><title>设计范式笔记-Composite</title><link>http://www.cppblog.com/GlideLiu/archive/2006/07/27/10586.html</link><dc:creator>静静的流水</dc:creator><author>静静的流水</author><pubDate>Thu, 27 Jul 2006 07:53:00 GMT</pubDate><guid>http://www.cppblog.com/GlideLiu/archive/2006/07/27/10586.html</guid><wfw:comment>http://www.cppblog.com/GlideLiu/comments/10586.html</wfw:comment><comments>http://www.cppblog.com/GlideLiu/archive/2006/07/27/10586.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/GlideLiu/comments/commentRss/10586.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/GlideLiu/services/trackbacks/10586.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 承接零件装配业务&nbsp;&nbsp;<a href='http://www.cppblog.com/GlideLiu/archive/2006/07/27/10586.html'>阅读全文</a><img src ="http://www.cppblog.com/GlideLiu/aggbug/10586.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/GlideLiu/" target="_blank">静静的流水</a> 2006-07-27 15:53 <a href="http://www.cppblog.com/GlideLiu/archive/2006/07/27/10586.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>设计范式笔记-Bridge</title><link>http://www.cppblog.com/GlideLiu/archive/2006/07/17/10171.html</link><dc:creator>静静的流水</dc:creator><author>静静的流水</author><pubDate>Mon, 17 Jul 2006 10:03:00 GMT</pubDate><guid>http://www.cppblog.com/GlideLiu/archive/2006/07/17/10171.html</guid><wfw:comment>http://www.cppblog.com/GlideLiu/comments/10171.html</wfw:comment><comments>http://www.cppblog.com/GlideLiu/archive/2006/07/17/10171.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/GlideLiu/comments/commentRss/10171.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/GlideLiu/services/trackbacks/10171.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Bridge范式--天堑变通途&nbsp;&nbsp;<a href='http://www.cppblog.com/GlideLiu/archive/2006/07/17/10171.html'>阅读全文</a><img src ="http://www.cppblog.com/GlideLiu/aggbug/10171.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/GlideLiu/" target="_blank">静静的流水</a> 2006-07-17 18:03 <a href="http://www.cppblog.com/GlideLiu/archive/2006/07/17/10171.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>设计范式笔记-Adapter</title><link>http://www.cppblog.com/GlideLiu/archive/2006/07/10/9648.html</link><dc:creator>静静的流水</dc:creator><author>静静的流水</author><pubDate>Mon, 10 Jul 2006 09:03:00 GMT</pubDate><guid>http://www.cppblog.com/GlideLiu/archive/2006/07/10/9648.html</guid><wfw:comment>http://www.cppblog.com/GlideLiu/comments/9648.html</wfw:comment><comments>http://www.cppblog.com/GlideLiu/archive/2006/07/10/9648.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/GlideLiu/comments/commentRss/9648.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/GlideLiu/services/trackbacks/9648.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="FONT-SIZE: 12pt">Adapter</span>
				</b>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">范式是一个</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">Class</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">Object Structural</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">范式。<br /><br /></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">简单说就是嫁接。从类层次图的设计原则来说，就是该干什么的就让它干什么，需要协作时，组合它们。</span>
		</p>
		<span lang="EN-US" style="FONT-SIZE: 12pt">
				<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
				<o:p>
						<br />
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
								<b style="mso-bidi-font-weight: normal">
										<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">class</span>
								</b>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<b style="mso-bidi-font-weight: normal">Shape</b> {<span style="mso-tab-count: 1">      </span><span style="mso-tab-count: 1">       </span>// </span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个接口</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<span style="mso-tab-count: 1">       </span>virtual void BoundBox() const = 0;<o:p></o:p></span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<span style="mso-tab-count: 1">       </span>virtual ~Shape() {};<o:p></o:p></span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">};<o:p></o:p></span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p> </o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">/*<o:p></o:p></span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 6pt; mso-para-margin-left: 2.0gd; mso-char-indent-count: .5">
								<span lang="EN-US" style="FONT-SIZE: 12pt">* </span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个抽象类，作为</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">TextShape</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">Helper</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，对</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">TextShape</span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表示的文本进行文</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 6pt; mso-para-margin-left: 2.0gd; mso-char-indent-count: .5">
								<span lang="EN-US" style="FONT-SIZE: 12pt">* </span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">本化编辑</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p>
										</o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 6pt; mso-para-margin-left: 2.0gd; mso-char-indent-count: .5">
								<span lang="EN-US" style="FONT-SIZE: 12pt">*/<o:p></o:p></span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
								<b style="mso-bidi-font-weight: normal">
										<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">class</span>
								</b>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<b style="mso-bidi-font-weight: normal">TextView</b> {<o:p></o:p></span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">};<o:p></o:p></span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p> </o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
								<b style="mso-bidi-font-weight: normal">
										<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">class</span>
								</b>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<b style="mso-bidi-font-weight: normal">TextShapeAdapter </b>: <b style="mso-bidi-font-weight: normal"><span style="COLOR: blue">public</span></b> Shape, <b style="mso-bidi-font-weight: normal"><span style="COLOR: blue">protected</span></b> TextView {<span style="mso-tab-count: 1">      </span>// </span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">Adapter<o:p></o:p></span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">};<o:p></o:p></span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<o:p> </o:p>
								</span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
								<b style="mso-bidi-font-weight: normal">
										<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: blue">class</span>
								</b>
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<b style="mso-bidi-font-weight: normal">TextShapeAdaptee</b> : <b style="mso-bidi-font-weight: normal"><span style="COLOR: blue">public</span></b> Shape {<span style="mso-tab-count: 1">   </span><span style="mso-tab-count: 1">       </span>// </span>
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个</span>
								<span lang="EN-US" style="FONT-SIZE: 12pt">Adaptee<o:p></o:p></span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<span style="mso-tab-count: 1">       </span>
										<b style="mso-bidi-font-weight: normal">
												<span style="COLOR: blue">protected</span>
										</b>:<o:p></o:p></span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<span style="mso-tab-count: 1">       </span>
										<span style="mso-tab-count: 1">       </span>TextView _helper;<o:p></o:p></span>
						</p>
						<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
								<span lang="EN-US" style="FONT-SIZE: 12pt">};<o:p></o:p></span>
						</p>
				</o:p>
		</span>
<img src ="http://www.cppblog.com/GlideLiu/aggbug/9648.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/GlideLiu/" target="_blank">静静的流水</a> 2006-07-10 17:03 <a href="http://www.cppblog.com/GlideLiu/archive/2006/07/10/9648.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>设计范式笔记-Singleton</title><link>http://www.cppblog.com/GlideLiu/archive/2006/07/04/9375.html</link><dc:creator>静静的流水</dc:creator><author>静静的流水</author><pubDate>Tue, 04 Jul 2006 06:42:00 GMT</pubDate><guid>http://www.cppblog.com/GlideLiu/archive/2006/07/04/9375.html</guid><wfw:comment>http://www.cppblog.com/GlideLiu/comments/9375.html</wfw:comment><comments>http://www.cppblog.com/GlideLiu/archive/2006/07/04/9375.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/GlideLiu/comments/commentRss/9375.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/GlideLiu/services/trackbacks/9375.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">Singleton</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">范式是一个</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">Object Creational</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">范式。<br /><br /></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="Times New Roman">Singleton</font>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">范式唯一需要注意的就是它范围。这个范围根据需要来指定，如：</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 41.95pt; TEXT-INDENT: -20.95pt; mso-list: l0 level3 lfo1; tab-stops: list 41.95pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings">
						<span style="mso-list: Ignore">n<span style="FONT: 7pt 'Times New Roman'">        </span></span>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个进程的地址空间内的唯一实例；</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 41.95pt; TEXT-INDENT: -20.95pt; mso-list: l0 level3 lfo1; tab-stops: list 41.95pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings">
						<span style="mso-list: Ignore">n<span style="FONT: 7pt 'Times New Roman'">        </span></span>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个物理机器内；</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 41.95pt; TEXT-INDENT: -20.95pt; mso-list: l0 level3 lfo1; tab-stops: list 41.95pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings">
						<span style="mso-list: Ignore">n<span style="FONT: 7pt 'Times New Roman'">        </span></span>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个虚拟机的地址空间内；</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 41.95pt; TEXT-INDENT: -20.95pt; mso-list: l0 level3 lfo1; tab-stops: list 41.95pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings">
						<span style="mso-list: Ignore">n<span style="FONT: 7pt 'Times New Roman'">        </span></span>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个局域网内；</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 41.95pt; TEXT-INDENT: -20.95pt; mso-list: l0 level3 lfo1; tab-stops: list 41.95pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings">
						<span style="mso-list: Ignore">n<span style="FONT: 7pt 'Times New Roman'">        </span></span>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">等等。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如果你是在一个库中实现，并且在多用户</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="Times New Roman">-</font>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">多进程环境下运行，同步控制也应该在设计时就考虑好。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
								<br />
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">创建型设计范式一句话描述</span>
				</b>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">Abstract Factory</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">——你要什么标准就实现什么标准，谁叫客户是上帝呢；</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">Builder</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">——装配和集成或从一种形式到另一种形式的转化；</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">Factory Method</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">——挑自己爱的；或只选对的，不选贵的；</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">Prototype</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">——自我复制；</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">Singleton</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">——天下无双；</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
		</p>
<img src ="http://www.cppblog.com/GlideLiu/aggbug/9375.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/GlideLiu/" target="_blank">静静的流水</a> 2006-07-04 14:42 <a href="http://www.cppblog.com/GlideLiu/archive/2006/07/04/9375.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>设计范式笔记-Prototype</title><link>http://www.cppblog.com/GlideLiu/archive/2006/06/30/9242.html</link><dc:creator>静静的流水</dc:creator><author>静静的流水</author><pubDate>Fri, 30 Jun 2006 08:41:00 GMT</pubDate><guid>http://www.cppblog.com/GlideLiu/archive/2006/06/30/9242.html</guid><wfw:comment>http://www.cppblog.com/GlideLiu/comments/9242.html</wfw:comment><comments>http://www.cppblog.com/GlideLiu/archive/2006/06/30/9242.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/GlideLiu/comments/commentRss/9242.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/GlideLiu/services/trackbacks/9242.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">Prototype</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">范式是一个</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">Object Creational</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">范式。<br /><br /></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="Times New Roman">Prototype</font>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">范式是一个运行时实例的自我复制，即这个实例把自己作为它所代表的这个类型的工厂。有点像《西游记》中的孙悟空以自己为原型，用自己的猴毛变成自己一样。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
								<font face="Times New Roman"> </font>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">有这样的能力需要具备的条件是：</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">
								<font face="Times New Roman">1、</font>
						</span>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供一个该类型的实例作为原型，比如石头里蹦出了孙悟空一样；</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">
								<font face="Times New Roman">2、</font>
						</span>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这个实例必须具有自我复制能力，比如孙悟空从他师傅那获得神技；</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt"> </p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实现这个范式的基础就是在一个需要自我复制的实例中添加一个接口：</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="宋体">class Prototype<o:p></o:p></font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="宋体">{<o:p></o:p></font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="宋体">
								<span style="mso-spacerun: yes">  </span>public:<o:p></o:p></font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 24pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="宋体">virtual Prototype clone()<o:p></o:p></font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 24pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="宋体">{<o:p></o:p></font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 24pt">
				<font face="宋体">
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<span style="mso-spacerun: yes">  </span>// </span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">根据自己的需要实现</span>
				</font>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 24pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="宋体">};<o:p></o:p></font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="宋体">};<o:p></o:p></font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt"> </p>
<img src ="http://www.cppblog.com/GlideLiu/aggbug/9242.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/GlideLiu/" target="_blank">静静的流水</a> 2006-06-30 16:41 <a href="http://www.cppblog.com/GlideLiu/archive/2006/06/30/9242.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>设计范式笔记-Factory Method</title><link>http://www.cppblog.com/GlideLiu/archive/2006/06/27/9063.html</link><dc:creator>静静的流水</dc:creator><author>静静的流水</author><pubDate>Tue, 27 Jun 2006 06:58:00 GMT</pubDate><guid>http://www.cppblog.com/GlideLiu/archive/2006/06/27/9063.html</guid><wfw:comment>http://www.cppblog.com/GlideLiu/comments/9063.html</wfw:comment><comments>http://www.cppblog.com/GlideLiu/archive/2006/06/27/9063.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/GlideLiu/comments/commentRss/9063.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/GlideLiu/services/trackbacks/9063.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">Factory Method</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是一个</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">Class Creational</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">范式。<br /><br /></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">原文</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">Intent</font>
						</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">部分</span>
				</b>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<span style="mso-tab-count: 1">
								<font face="Times New Roman">      </font>
						</span>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">“</span>
				<i style="mso-bidi-font-style: normal">
						<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: red">
								<font face="Times New Roman">This creates a dilemma: The framework must instantiate classes, but it only knows about abstract classes, which it cannot instantiate.</font>
						</span>
				</i>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">”</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt">
				<font face="Times New Roman">
						<span lang="EN-US" style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'">
								<span style="mso-list: Ignore">1、</span>
						</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">Application</span>
				</font>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">使用</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="Times New Roman">Factory Method</font>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="Times New Roman">Framework</font>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">隐藏了</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="Times New Roman">Document</font>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的实现细节；</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="Times New Roman">
								<font color="#0000ff">class Document<o:p></o:p></font>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="Times New Roman">
								<font color="#0000ff">{<o:p></o:p></font>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<span style="mso-tab-count: 1">
						</span>
						<font face="Times New Roman">
								<font color="#0000ff">
										<span style="mso-tab-count: 1">       </span>virtual void open() = 0;<o:p></o:p></font>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<span style="mso-tab-count: 1">
						</span>
						<font face="Times New Roman">
								<font color="#0000ff">
										<span style="mso-tab-count: 1">       </span>virtual void close() = 0;<o:p></o:p></font>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="Times New Roman">
								<font color="#0000ff">};<o:p></o:p></font>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
								<font face="Times New Roman"> </font>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="Times New Roman">
								<font color="#0000ff">class Factory<o:p></o:p></font>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="Times New Roman">
								<font color="#0000ff">{<o:p></o:p></font>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<span style="mso-tab-count: 1">
						</span>
						<font face="Times New Roman">
								<font color="#0000ff">
										<span style="mso-tab-count: 1">       </span>public:<o:p></o:p></font>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<span style="mso-tab-count: 1">
						</span>
						<font face="Times New Roman">
								<font color="#0000ff">
										<span style="mso-tab-count: 1">       </span>
										<span style="mso-tab-count: 1">       </span>// </font>
						</font>
				</span>
				<font color="#0000ff">
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个虚函数，被子类实现以便决定真实的</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">Document</font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类型；</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<o:p>
								</o:p>
						</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<span style="mso-tab-count: 1">
						</span>
						<font face="Times New Roman">
								<font color="#0000ff">
										<span style="mso-tab-count: 1">       </span>
										<span style="mso-tab-count: 1">       </span>virtual Document createDocument() { return 0;};<o:p></o:p></font>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="Times New Roman">
								<font color="#0000ff">};<o:p></o:p></font>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
								<font face="Times New Roman" color="#0000ff"> </font>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="Times New Roman">
								<font color="#0000ff">class Application : public Factory<o:p></o:p></font>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="Times New Roman">
								<font color="#0000ff">{<o:p></o:p></font>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<span style="mso-tab-count: 1">
						</span>
						<font face="Times New Roman">
								<font color="#0000ff">
										<span style="mso-tab-count: 1">       </span>…<o:p></o:p></font>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="Times New Roman">
								<font color="#0000ff">};<o:p></o:p></font>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
								<font face="Times New Roman" color="#0000ff"> </font>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="Times New Roman">
								<font color="#0000ff">class Framework<o:p></o:p></font>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="Times New Roman">
								<font color="#0000ff">{<o:p></o:p></font>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<span style="mso-tab-count: 1">
						</span>
						<font face="Times New Roman">
								<font color="#0000ff">
										<span style="mso-tab-count: 1">       </span>private:<o:p></o:p></font>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<span style="mso-tab-count: 1">
						</span>
						<font face="Times New Roman">
								<font color="#0000ff">
										<span style="mso-tab-count: 1">       </span>
										<span style="mso-tab-count: 1">       </span>Application _application;<o:p></o:p></font>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<span style="mso-tab-count: 1">
						</span>
						<font face="Times New Roman">
								<font color="#0000ff">
										<span style="mso-tab-count: 1">       </span>
										<span style="mso-tab-count: 1">       </span>Document _document;<o:p></o:p></font>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<span style="mso-tab-count: 1">
						</span>
						<font face="Times New Roman">
								<font color="#0000ff">
										<span style="mso-tab-count: 1">       </span>…<o:p></o:p></font>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="Times New Roman">
								<font color="#0000ff">};<br /></font>
								<br />
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">
								<font face="Times New Roman">2、</font>
						</span>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="Times New Roman">hook<o:p></o:p></font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 42pt; mso-para-margin-left: 4.0gd">
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">Hook</font>
						</span>
				</b>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是用来挂东西的。这个被挂的东西要求与</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="Times New Roman">Hook</font>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的定义具有相同的原型。在</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="Times New Roman">C</font>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中，它被一个函数指针定义；在</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="Times New Roman">C++</font>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中，由于</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<font face="Times New Roman">overriding</font>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的提供，它可以被虚函数以及纯虚函数定义；</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
		</p>
<img src ="http://www.cppblog.com/GlideLiu/aggbug/9063.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/GlideLiu/" target="_blank">静静的流水</a> 2006-06-27 14:58 <a href="http://www.cppblog.com/GlideLiu/archive/2006/06/27/9063.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>设计范式笔记-Builder</title><link>http://www.cppblog.com/GlideLiu/archive/2006/06/26/9022.html</link><dc:creator>静静的流水</dc:creator><author>静静的流水</author><pubDate>Mon, 26 Jun 2006 09:12:00 GMT</pubDate><guid>http://www.cppblog.com/GlideLiu/archive/2006/06/26/9022.html</guid><wfw:comment>http://www.cppblog.com/GlideLiu/comments/9022.html</wfw:comment><comments>http://www.cppblog.com/GlideLiu/archive/2006/06/26/9022.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/GlideLiu/comments/commentRss/9022.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/GlideLiu/services/trackbacks/9022.html</trackback:ping><description><![CDATA[
		<span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
						<span lang="EN-US" style="FONT-SIZE: 12pt">Builder</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">范式是一个</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">Object Creational</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">范式。<br /><br /></span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">Builder</font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">范式主要用于装配（</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">Assembly</font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）和集成（</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">Integration</font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）。一是为相同内容创建不同的展现；二是使用不同的部分进行组合，产生一种新的对象类型。</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
								<o:p>
								</o:p>
						</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<o:p>
										<font face="Times New Roman"> </font>
								</o:p>
						</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
						<b style="mso-bidi-font-weight: normal">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">原文</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span lang="EN-US" style="FONT-SIZE: 12pt">
										<font face="Times New Roman">Intent</font>
								</span>
						</b>
						<b style="mso-bidi-font-weight: normal">
								<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">部分</span>
						</b>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<o:p>
								</o:p>
						</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<span style="mso-tab-count: 1">
										<font face="Times New Roman">       </font>
								</span>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">“</span>
						<font face="Times New Roman">
								<i style="mso-bidi-font-style: normal">
										<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: red">... create different representations</span>
								</i>
								<span lang="EN-US" style="FONT-SIZE: 12pt">.</span>
						</font>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">”</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<o:p>
								</o:p>
						</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<span style="mso-tab-count: 1">
										<font face="Times New Roman">       </font>
								</span>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可以理解为把相同的内容经过</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">Builder</font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">处理后，创建新的或转换成不同的形状。这可以想到编译器、文档的格式转换器等等的实现和用途。</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<o:p>
								</o:p>
						</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<o:p>
										<font face="Times New Roman"> </font>
								</o:p>
						</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<font face="Times New Roman">Builder</font>
						</span>
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">范式要求从物理上隔离使用者和转换器对象。</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<o:p>
								</o:p>
						</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<o:p>
										<font face="Times New Roman"> </font>
								</o:p>
						</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">转换器使用者根据自己的需要要求转换器对它选定的内容进行规定的转换，但它并不知道转换器如何转换；而转换器在接收到使用者传递的内容后，按照使用者的要求启动转换过程。</span>
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<o:p>
								</o:p>
						</span>
				</p>
				<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				</p>
		</span>
		<span lang="EN-US" style="FONT-SIZE: 12pt">
				<o:p>
				</o:p>
		</span>
<img src ="http://www.cppblog.com/GlideLiu/aggbug/9022.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/GlideLiu/" target="_blank">静静的流水</a> 2006-06-26 17:12 <a href="http://www.cppblog.com/GlideLiu/archive/2006/06/26/9022.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>设计范式笔记-AbstractFactory（二）</title><link>http://www.cppblog.com/GlideLiu/archive/2006/06/23/8888.html</link><dc:creator>静静的流水</dc:creator><author>静静的流水</author><pubDate>Fri, 23 Jun 2006 07:31:00 GMT</pubDate><guid>http://www.cppblog.com/GlideLiu/archive/2006/06/23/8888.html</guid><wfw:comment>http://www.cppblog.com/GlideLiu/comments/8888.html</wfw:comment><comments>http://www.cppblog.com/GlideLiu/archive/2006/06/23/8888.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/GlideLiu/comments/commentRss/8888.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/GlideLiu/services/trackbacks/8888.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">原书中给出了</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">AbstractFactory</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">范式的三种实现方式：</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">1、</span>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">作为一个</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">Singleton</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实现；</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这种方式的说明将在说到</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">Singleton</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">范式补充。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">2、</span>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">创建系列产品；</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 42pt">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在这种方式下又包含两种子方式：</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 63pt; TEXT-INDENT: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 63.0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">a)<span style="FONT: 7pt 'Times New Roman'">        </span></span>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">使用</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">Factory Method</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">范式；</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 63pt">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">简单地说，使用这种方式的实现就是定义一个接口，针对自己定义的产品（</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">widget</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）集合中每个类型定义一个创建方法，并在其子类中提供实现。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 63pt; TEXT-INDENT: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 63.0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">b)<span style="FONT: 7pt 'Times New Roman'">        </span></span>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">使用</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">Prototype</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">范式；</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 63pt">
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">原文</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="FONT-SIZE: 12pt">Implementation</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">部分</span>
				</b>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 63pt">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">“</span>
				<i style="mso-bidi-font-style: normal">
						<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: red">The concrete factory is initialized with a prototypical instance of each product in the family, and it creates a new product by cloning its prototype</span>
				</i>
				<span lang="EN-US" style="FONT-SIZE: 12pt">.</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">”</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 63pt">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这句话的意思是说，对在同一个产品簇的产品，当它们的工厂被实例化时，它们同时也被实例化到这个工厂中，并在客户需要其中某个类型的产品实例时，使用</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">clone</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方式创建一个新的对象给客户。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 63pt">
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">原本</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="FONT-SIZE: 12pt">Implementation</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">部分</span>
				</b>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 63pt">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">“</span>
				<i style="mso-bidi-font-style: normal">
						<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: red">The Prototype-based approach eliminates the need for a new concrete factory class for each new product family</span>
				</i>
				<span lang="EN-US" style="FONT-SIZE: 12pt">.</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">”这句话是上句引文的下一句。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 63pt">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我个人认为，这句话的本意是针对</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">a</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）方法而言的；但却与它的上一句话相互矛盾。因为上一句说这个方法是针对“</span>
				<i style="mso-bidi-font-style: normal">
						<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: red">in the family</span>
				</i>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">”的，而本句是针对“</span>
				<i style="mso-bidi-font-style: normal">
						<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: red">a new concrete factory</span>
				</i>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">”和“</span>
				<i style="mso-bidi-font-style: normal">
						<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: red">new product family</span>
				</i>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">”的。稍微有点英语常识的人都知道，“</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">the</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">”是定冠词，一般用于特指；而“</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">a</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">”在这里表示任意。因此我认为是说不通的，换句话说，使用基于</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">Prototype</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的实现仍然不能消除一个具体的工厂针对一个具体产品簇的限制。即使可以，一般应用在该产品集合包含较少的产品类型时使用。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">3、</span>
				</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">定义可扩展的工厂；</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这种方式针对自己定义的产品（</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">widget</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）集合不可预知的类型扩展，提供一种叠加的方式，以便扩展自己的工厂来生产被扩展的产品类型。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
<img src ="http://www.cppblog.com/GlideLiu/aggbug/8888.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/GlideLiu/" target="_blank">静静的流水</a> 2006-06-23 15:31 <a href="http://www.cppblog.com/GlideLiu/archive/2006/06/23/8888.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>设计范式笔记-AbstractFactory（一）</title><link>http://www.cppblog.com/GlideLiu/archive/2006/06/21/8798.html</link><dc:creator>静静的流水</dc:creator><author>静静的流水</author><pubDate>Wed, 21 Jun 2006 14:57:00 GMT</pubDate><guid>http://www.cppblog.com/GlideLiu/archive/2006/06/21/8798.html</guid><wfw:comment>http://www.cppblog.com/GlideLiu/comments/8798.html</wfw:comment><comments>http://www.cppblog.com/GlideLiu/archive/2006/06/21/8798.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/GlideLiu/comments/commentRss/8798.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/GlideLiu/services/trackbacks/8798.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt">Abstract Factory</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，这是一个</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">Object Creational</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">范式。<br /></span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">原文</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="FONT-SIZE: 12pt">Intent</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">部分：</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt; mso-para-margin-left: 2.0gd">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">“</span>
				<i style="mso-bidi-font-style: normal">
						<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: red">…without specifying their concrete classes</span>
				</i>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">”，即对使用这个对象的用户，不直接提供</span>
				<i style="mso-bidi-font-style: normal">
						<span lang="EN-US" style="FONT-SIZE: 12pt">new</span>
				</i>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">操作；<br /><br /></span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个对象的类型支持多种标准；并满足用户在多种标准之间自由地从一种标准转换成另外一种标准。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为了实现这个范式，需要为将要实现的</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">widget</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">集合定义一个总的工厂抽象类，即：</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">AbstractFactory</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，同时在这个工厂类中为每个</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">widget</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">定义一个类似于</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">CreateXXX</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">Create</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表示要执行的活动，</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">XXX</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表示被创建的</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">widget</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的类型名称）的方法；并对要实现的</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">widget</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">集合中的每个</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">widget</span>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">定义一个抽象类。</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd">
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">原文</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="FONT-SIZE: 12pt">Motivation</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">部分：</span>
				</b>
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="FONT-SIZE: 12pt">
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 42pt; mso-para-margin-left: 4.0gd">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">“</span>
				<i style="mso-bidi-font-style: normal">
						<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: red">There’s also an abstract class for each kind of widget, and concrete subclasses implement widgets for specific look-and-feel standards.</span>
				</i>
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">”</span>
				<span lang="EN-US" style="FONT-SIZE: 12pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd" align="left"> <img title="af1" height="1" src="/WebResource.axd?d=pLXXeGbWF7eXU8SMs2-GFZvUWY2JNH05dFx5YzJhGUYAYJAFEaTEq36NAhTPy7_KekvzDFwt8wvQWdByvJIGWdEq6x2KpKD80&amp;t=632780334567500000" width="1" /><img title="af1" height="382" alt="抽象工厂.png" src="http://www.cppblog.com/images/cppblog_com/glideliu/DesignPatterns/抽象工厂.png" width="532" border="0" /><br /><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">由于对实现每个标准下的</span><span lang="EN-US" style="FONT-SIZE: 12pt">widget</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类型集合需要提供相应的</span><span lang="EN-US" style="FONT-SIZE: 12pt">WidgetFactory</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的实现，因此用户需要实例化每个标准下的工厂实现。<br /><br /></span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为解决这个问题，在</span><span lang="EN-US" style="FONT-SIZE: 12pt">Java</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中存在典型的实现方式。就是定义上图的上一部分，然后自己实现一个作为默认的；然后，在某个地方实现一个静态的方法，以实例化真实的</span><span lang="EN-US" style="FONT-SIZE: 12pt">WidgetFactory</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">；接下来给应用开发人员提供一个标准的系统属性，比如</span><span lang="EN-US" style="FONT-SIZE: 12pt">-Djava.widget.factory=</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">；这样可实现灵活的撤换。</span></p>
<img src ="http://www.cppblog.com/GlideLiu/aggbug/8798.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/GlideLiu/" target="_blank">静静的流水</a> 2006-06-21 22:57 <a href="http://www.cppblog.com/GlideLiu/archive/2006/06/21/8798.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>