﻿<?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++博客-Anywhere-随笔分类-设计模式学习笔记----行为模式 </title><link>http://www.cppblog.com/Aireed/category/11146.html</link><description>水中苇</description><language>zh-cn</language><lastBuildDate>Sun, 16 Aug 2009 12:09:05 GMT</lastBuildDate><pubDate>Sun, 16 Aug 2009 12:09:05 GMT</pubDate><ttl>60</ttl><item><title>state模式</title><link>http://www.cppblog.com/Aireed/archive/2009/08/13/93138.html</link><dc:creator>三水寿</dc:creator><author>三水寿</author><pubDate>Thu, 13 Aug 2009 02:25:00 GMT</pubDate><guid>http://www.cppblog.com/Aireed/archive/2009/08/13/93138.html</guid><wfw:comment>http://www.cppblog.com/Aireed/comments/93138.html</wfw:comment><comments>http://www.cppblog.com/Aireed/archive/2009/08/13/93138.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Aireed/comments/commentRss/93138.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Aireed/services/trackbacks/93138.html</trackback:ping><description><![CDATA[主要是用来处理状态改变的.<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.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Context;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;state<br><img id=Codehighlighter1_27_102_Open_Image onclick="this.style.display='none'; Codehighlighter1_27_102_Open_Text.style.display='none'; Codehighlighter1_27_102_Closed_Image.style.display='inline'; Codehighlighter1_27_102_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_27_102_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_27_102_Closed_Text.style.display='none'; Codehighlighter1_27_102_Open_Image.style.display='inline'; Codehighlighter1_27_102_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_27_102_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_27_102_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;state();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">state();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;virtaul&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;ShowState();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;childA:</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;state<br><img id=Codehighlighter1_131_292_Open_Image onclick="this.style.display='none'; Codehighlighter1_131_292_Open_Text.style.display='none'; Codehighlighter1_131_292_Closed_Image.style.display='inline'; Codehighlighter1_131_292_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_131_292_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_131_292_Closed_Text.style.display='none'; Codehighlighter1_131_292_Open_Image.style.display='inline'; Codehighlighter1_131_292_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_131_292_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_131_292_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;childA();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">childA();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;ShowState();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;changeState(Context&nbsp;<span style="COLOR: #000000">*</span><span style="COLOR: #000000">pCtxt;</span>)<br><img id=Codehighlighter1_225_259_Open_Image onclick="this.style.display='none'; Codehighlighter1_225_259_Open_Text.style.display='none'; Codehighlighter1_225_259_Closed_Image.style.display='inline'; Codehighlighter1_225_259_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_225_259_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_225_259_Closed_Text.style.display='none'; Codehighlighter1_225_259_Open_Image.style.display='inline'; Codehighlighter1_225_259_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_225_259_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_225_259_Open_Text><span style="COLOR: #000000">{pCtxt</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">changeState(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;childB());}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;childB:</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;state<br><img id=Codehighlighter1_321_484_Open_Image onclick="this.style.display='none'; Codehighlighter1_321_484_Open_Text.style.display='none'; Codehighlighter1_321_484_Closed_Image.style.display='inline'; Codehighlighter1_321_484_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_321_484_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_321_484_Closed_Text.style.display='none'; Codehighlighter1_321_484_Open_Image.style.display='inline'; Codehighlighter1_321_484_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_321_484_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_321_484_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;childB();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">childB();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;ShowState();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;changeState(Context&nbsp;<span style="COLOR: #000000">*</span><span style="COLOR: #000000">pCtxt</span>)<br><img id=Codehighlighter1_415_449_Open_Image onclick="this.style.display='none'; Codehighlighter1_415_449_Open_Text.style.display='none'; Codehighlighter1_415_449_Closed_Image.style.display='inline'; Codehighlighter1_415_449_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_415_449_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_415_449_Closed_Text.style.display='none'; Codehighlighter1_415_449_Open_Image.style.display='inline'; Codehighlighter1_415_449_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_415_449_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_415_449_Open_Text><span style="COLOR: #000000">{pCtxt</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">changeState(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;childA());}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Context<br><img id=Codehighlighter1_501_624_Open_Image onclick="this.style.display='none'; Codehighlighter1_501_624_Open_Text.style.display='none'; Codehighlighter1_501_624_Closed_Image.style.display='inline'; Codehighlighter1_501_624_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_501_624_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_501_624_Closed_Text.style.display='none'; Codehighlighter1_501_624_Open_Image.style.display='inline'; Codehighlighter1_501_624_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_501_624_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_501_624_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context(state *);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void setState(state *);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;showState();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;changeState(state&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;friend&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;state;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">_state;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;</span></div>
<img src ="http://www.cppblog.com/Aireed/aggbug/93138.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Aireed/" target="_blank">三水寿</a> 2009-08-13 10:25 <a href="http://www.cppblog.com/Aireed/archive/2009/08/13/93138.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Template模式.------strategy模式.</title><link>http://www.cppblog.com/Aireed/archive/2009/08/12/92987.html</link><dc:creator>三水寿</dc:creator><author>三水寿</author><pubDate>Wed, 12 Aug 2009 01:27:00 GMT</pubDate><guid>http://www.cppblog.com/Aireed/archive/2009/08/12/92987.html</guid><wfw:comment>http://www.cppblog.com/Aireed/comments/92987.html</wfw:comment><comments>http://www.cppblog.com/Aireed/archive/2009/08/12/92987.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Aireed/comments/commentRss/92987.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Aireed/services/trackbacks/92987.html</trackback:ping><description><![CDATA[在父类中定义方法,将具体实现放到方法中.<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.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;father<br><img id=Codehighlighter1_13_158_Open_Image onclick="this.style.display='none'; Codehighlighter1_13_158_Open_Text.style.display='none'; Codehighlighter1_13_158_Closed_Image.style.display='inline'; Codehighlighter1_13_158_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_13_158_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_13_158_Closed_Text.style.display='none'; Codehighlighter1_13_158_Open_Image.style.display='inline'; Codehighlighter1_13_158_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_13_158_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_13_158_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;method()&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">方法</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_49_80_Open_Image onclick="this.style.display='none'; Codehighlighter1_49_80_Open_Text.style.display='none'; Codehighlighter1_49_80_Closed_Image.style.display='inline'; Codehighlighter1_49_80_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_49_80_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_49_80_Closed_Text.style.display='none'; Codehighlighter1_49_80_Open_Image.style.display='inline'; Codehighlighter1_49_80_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_49_80_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_49_80_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fun1();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fun2();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;fun1()</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">细节1</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;virtaul&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;fun2()</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">细节2</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;child:</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;father<br><img id=Codehighlighter1_187_271_Open_Image onclick="this.style.display='none'; Codehighlighter1_187_271_Open_Text.style.display='none'; Codehighlighter1_187_271_Closed_Image.style.display='inline'; Codehighlighter1_187_271_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_187_271_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_187_271_Closed_Text.style.display='none'; Codehighlighter1_187_271_Open_Image.style.display='inline'; Codehighlighter1_187_271_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_187_271_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_187_271_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">实现细节.</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;fun1()<br><img id=Codehighlighter1_244_245_Open_Image onclick="this.style.display='none'; Codehighlighter1_244_245_Open_Text.style.display='none'; Codehighlighter1_244_245_Closed_Image.style.display='inline'; Codehighlighter1_244_245_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_244_245_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_244_245_Closed_Text.style.display='none'; Codehighlighter1_244_245_Open_Image.style.display='inline'; Codehighlighter1_244_245_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_244_245_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_244_245_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;fun2()<br><img id=Codehighlighter1_268_269_Open_Image onclick="this.style.display='none'; Codehighlighter1_268_269_Open_Text.style.display='none'; Codehighlighter1_268_269_Closed_Image.style.display='inline'; Codehighlighter1_268_269_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_268_269_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_268_269_Closed_Text.style.display='none'; Codehighlighter1_268_269_Open_Image.style.display='inline'; Codehighlighter1_268_269_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_268_269_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_268_269_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>调用代码:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;father&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pc</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;child;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;pc</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">method();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;</span></div>
缺点:代码复用性不强. <br>strategy模式采用的是类组合的方式实现.<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.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;strategy<br><img id=Codehighlighter1_15_60_Open_Image onclick="this.style.display='none'; Codehighlighter1_15_60_Open_Text.style.display='none'; Codehighlighter1_15_60_Closed_Image.style.display='inline'; Codehighlighter1_15_60_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_15_60_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_15_60_Closed_Text.style.display='none'; Codehighlighter1_15_60_Open_Image.style.display='inline'; Codehighlighter1_15_60_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_15_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_15_60_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;operation()</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;child:</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;strategy<br><img id=Codehighlighter1_91_134_Open_Image onclick="this.style.display='none'; Codehighlighter1_91_134_Open_Text.style.display='none'; Codehighlighter1_91_134_Closed_Image.style.display='inline'; Codehighlighter1_91_134_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_91_134_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_91_134_Closed_Text.style.display='none'; Codehighlighter1_91_134_Open_Image.style.display='inline'; Codehighlighter1_91_134_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_91_134_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_91_134_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;operation()<br><img id=Codehighlighter1_131_132_Open_Image onclick="this.style.display='none'; Codehighlighter1_131_132_Open_Text.style.display='none'; Codehighlighter1_131_132_Closed_Image.style.display='inline'; Codehighlighter1_131_132_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_131_132_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_131_132_Closed_Text.style.display='none'; Codehighlighter1_131_132_Open_Image.style.display='inline'; Codehighlighter1_131_132_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_131_132_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_131_132_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;X<br><img id=Codehighlighter1_145_227_Open_Image onclick="this.style.display='none'; Codehighlighter1_145_227_Open_Text.style.display='none'; Codehighlighter1_145_227_Closed_Image.style.display='inline'; Codehighlighter1_145_227_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_145_227_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_145_227_Closed_Text.style.display='none'; Codehighlighter1_145_227_Open_Image.style.display='inline'; Codehighlighter1_145_227_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_145_227_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_145_227_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;method()<br><img id=Codehighlighter1_180_196_Open_Image onclick="this.style.display='none'; Codehighlighter1_180_196_Open_Text.style.display='none'; Codehighlighter1_180_196_Closed_Image.style.display='inline'; Codehighlighter1_180_196_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_180_196_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_180_196_Closed_Text.style.display='none'; Codehighlighter1_180_196_Open_Image.style.display='inline'; Codehighlighter1_180_196_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_180_196_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_180_196_Open_Text><span style="COLOR: #000000">{p</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">operation();}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strategy&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;</span></div>
<img src ="http://www.cppblog.com/Aireed/aggbug/92987.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Aireed/" target="_blank">三水寿</a> 2009-08-12 09:27 <a href="http://www.cppblog.com/Aireed/archive/2009/08/12/92987.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>