﻿<?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++博客-浮生半日闲-随笔分类-设计模式</title><link>http://www.cppblog.com/Herbert/category/7070.html</link><description>如果我们能时时刻刻都在学习，从观察、聆听、注视和行动中学习，那么你会发现，学习是不断进展，永无过去</description><language>zh-cn</language><lastBuildDate>Fri, 12 Dec 2008 17:52:41 GMT</lastBuildDate><pubDate>Fri, 12 Dec 2008 17:52:41 GMT</pubDate><ttl>60</ttl><item><title>设计模式分类</title><link>http://www.cppblog.com/Herbert/archive/2008/12/13/69307.html</link><dc:creator>Herbert</dc:creator><author>Herbert</author><pubDate>Fri, 12 Dec 2008 16:40:00 GMT</pubDate><guid>http://www.cppblog.com/Herbert/archive/2008/12/13/69307.html</guid><wfw:comment>http://www.cppblog.com/Herbert/comments/69307.html</wfw:comment><comments>http://www.cppblog.com/Herbert/archive/2008/12/13/69307.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Herbert/comments/commentRss/69307.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Herbert/services/trackbacks/69307.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 设计模式分类&nbsp;&nbsp;<a href='http://www.cppblog.com/Herbert/archive/2008/12/13/69307.html'>阅读全文</a><img src ="http://www.cppblog.com/Herbert/aggbug/69307.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Herbert/" target="_blank">Herbert</a> 2008-12-13 00:40 <a href="http://www.cppblog.com/Herbert/archive/2008/12/13/69307.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Composite(组合)模式</title><link>http://www.cppblog.com/Herbert/archive/2008/11/08/66324.html</link><dc:creator>Herbert</dc:creator><author>Herbert</author><pubDate>Sat, 08 Nov 2008 06:01:00 GMT</pubDate><guid>http://www.cppblog.com/Herbert/archive/2008/11/08/66324.html</guid><wfw:comment>http://www.cppblog.com/Herbert/comments/66324.html</wfw:comment><comments>http://www.cppblog.com/Herbert/archive/2008/11/08/66324.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Herbert/comments/commentRss/66324.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Herbert/services/trackbacks/66324.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Composite(组合)模式&nbsp;&nbsp;<a href='http://www.cppblog.com/Herbert/archive/2008/11/08/66324.html'>阅读全文</a><img src ="http://www.cppblog.com/Herbert/aggbug/66324.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Herbert/" target="_blank">Herbert</a> 2008-11-08 14:01 <a href="http://www.cppblog.com/Herbert/archive/2008/11/08/66324.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Decorator（装饰）模式</title><link>http://www.cppblog.com/Herbert/archive/2008/11/08/66322.html</link><dc:creator>Herbert</dc:creator><author>Herbert</author><pubDate>Sat, 08 Nov 2008 05:26:00 GMT</pubDate><guid>http://www.cppblog.com/Herbert/archive/2008/11/08/66322.html</guid><wfw:comment>http://www.cppblog.com/Herbert/comments/66322.html</wfw:comment><comments>http://www.cppblog.com/Herbert/archive/2008/11/08/66322.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Herbert/comments/commentRss/66322.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Herbert/services/trackbacks/66322.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Decorator（装饰）模式&nbsp;&nbsp;<a href='http://www.cppblog.com/Herbert/archive/2008/11/08/66322.html'>阅读全文</a><img src ="http://www.cppblog.com/Herbert/aggbug/66322.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Herbert/" target="_blank">Herbert</a> 2008-11-08 13:26 <a href="http://www.cppblog.com/Herbert/archive/2008/11/08/66322.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Prototype模式</title><link>http://www.cppblog.com/Herbert/archive/2008/11/08/66307.html</link><dc:creator>Herbert</dc:creator><author>Herbert</author><pubDate>Sat, 08 Nov 2008 03:06:00 GMT</pubDate><guid>http://www.cppblog.com/Herbert/archive/2008/11/08/66307.html</guid><wfw:comment>http://www.cppblog.com/Herbert/comments/66307.html</wfw:comment><comments>http://www.cppblog.com/Herbert/archive/2008/11/08/66307.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Herbert/comments/commentRss/66307.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Herbert/services/trackbacks/66307.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Prototype模式&nbsp;&nbsp;<a href='http://www.cppblog.com/Herbert/archive/2008/11/08/66307.html'>阅读全文</a><img src ="http://www.cppblog.com/Herbert/aggbug/66307.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Herbert/" target="_blank">Herbert</a> 2008-11-08 11:06 <a href="http://www.cppblog.com/Herbert/archive/2008/11/08/66307.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Builder模式</title><link>http://www.cppblog.com/Herbert/archive/2008/11/08/66303.html</link><dc:creator>Herbert</dc:creator><author>Herbert</author><pubDate>Sat, 08 Nov 2008 02:49:00 GMT</pubDate><guid>http://www.cppblog.com/Herbert/archive/2008/11/08/66303.html</guid><wfw:comment>http://www.cppblog.com/Herbert/comments/66303.html</wfw:comment><comments>http://www.cppblog.com/Herbert/archive/2008/11/08/66303.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Herbert/comments/commentRss/66303.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Herbert/services/trackbacks/66303.html</trackback:ping><description><![CDATA[&nbsp; Builder模式与Abstract&nbsp; factory 模式比较相似，不同的地方在于Builder模式在创建过程中是按步骤来创建对象的每个部分，然后返回该被创建的对象；而抽象工厂则侧重于不同的工厂创建不同的产品。<br>&nbsp; 如下图所示：<br><br><img height=339 alt="" src="http://www.cppblog.com/images/cppblog_com/herbert/Builder_mode.PNG" width=411 border=0><br><br>&nbsp; 理解的要点有两个，一个是Client对Director的使用；另外一个是Director的CreateProduct()方法的实现。<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;CreateProduct()方法的实现：<br>&nbsp;&nbsp;&nbsp;Product Director::CreateProduct( AbstractBuilder builder)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;builder.BuildPart1();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;builder.BuildPart2();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;builder.BuildPart3();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return builder.GetProduct();<br>&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;Client 的调用：<br>&nbsp;&nbsp;&nbsp;Builder1 builder;<br>&nbsp;&nbsp;&nbsp;Director dir;<br>&nbsp;&nbsp;&nbsp;Product pro = dir.CreateProduct( builder);<br>
<img src ="http://www.cppblog.com/Herbert/aggbug/66303.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Herbert/" target="_blank">Herbert</a> 2008-11-08 10:49 <a href="http://www.cppblog.com/Herbert/archive/2008/11/08/66303.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Singleton(单件) 模式 和 Double Checked Locking (双重检查锁定) 模式</title><link>http://www.cppblog.com/Herbert/archive/2008/05/22/50709.html</link><dc:creator>Herbert</dc:creator><author>Herbert</author><pubDate>Wed, 21 May 2008 16:09:00 GMT</pubDate><guid>http://www.cppblog.com/Herbert/archive/2008/05/22/50709.html</guid><wfw:comment>http://www.cppblog.com/Herbert/comments/50709.html</wfw:comment><comments>http://www.cppblog.com/Herbert/archive/2008/05/22/50709.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Herbert/comments/commentRss/50709.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Herbert/services/trackbacks/50709.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Singleton(单件) 模式 和 Double Checked Locking (双重检查锁定) 模式&nbsp;&nbsp;<a href='http://www.cppblog.com/Herbert/archive/2008/05/22/50709.html'>阅读全文</a><img src ="http://www.cppblog.com/Herbert/aggbug/50709.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Herbert/" target="_blank">Herbert</a> 2008-05-22 00:09 <a href="http://www.cppblog.com/Herbert/archive/2008/05/22/50709.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Bridge（桥接）模式</title><link>http://www.cppblog.com/Herbert/archive/2008/05/17/50113.html</link><dc:creator>Herbert</dc:creator><author>Herbert</author><pubDate>Fri, 16 May 2008 16:07:00 GMT</pubDate><guid>http://www.cppblog.com/Herbert/archive/2008/05/17/50113.html</guid><wfw:comment>http://www.cppblog.com/Herbert/comments/50113.html</wfw:comment><comments>http://www.cppblog.com/Herbert/archive/2008/05/17/50113.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Herbert/comments/commentRss/50113.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Herbert/services/trackbacks/50113.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Bridge（桥接）模式&nbsp;&nbsp;<a href='http://www.cppblog.com/Herbert/archive/2008/05/17/50113.html'>阅读全文</a><img src ="http://www.cppblog.com/Herbert/aggbug/50113.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Herbert/" target="_blank">Herbert</a> 2008-05-17 00:07 <a href="http://www.cppblog.com/Herbert/archive/2008/05/17/50113.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Observer(观察者）模式</title><link>http://www.cppblog.com/Herbert/archive/2008/05/16/50006.html</link><dc:creator>Herbert</dc:creator><author>Herbert</author><pubDate>Thu, 15 May 2008 18:38:00 GMT</pubDate><guid>http://www.cppblog.com/Herbert/archive/2008/05/16/50006.html</guid><wfw:comment>http://www.cppblog.com/Herbert/comments/50006.html</wfw:comment><comments>http://www.cppblog.com/Herbert/archive/2008/05/16/50006.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Herbert/comments/commentRss/50006.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Herbert/services/trackbacks/50006.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Observer(观察者）模式&nbsp;&nbsp;<a href='http://www.cppblog.com/Herbert/archive/2008/05/16/50006.html'>阅读全文</a><img src ="http://www.cppblog.com/Herbert/aggbug/50006.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Herbert/" target="_blank">Herbert</a> 2008-05-16 02:38 <a href="http://www.cppblog.com/Herbert/archive/2008/05/16/50006.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Facade（外观）模式</title><link>http://www.cppblog.com/Herbert/archive/2008/05/15/49979.html</link><dc:creator>Herbert</dc:creator><author>Herbert</author><pubDate>Thu, 15 May 2008 11:31:00 GMT</pubDate><guid>http://www.cppblog.com/Herbert/archive/2008/05/15/49979.html</guid><wfw:comment>http://www.cppblog.com/Herbert/comments/49979.html</wfw:comment><comments>http://www.cppblog.com/Herbert/archive/2008/05/15/49979.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Herbert/comments/commentRss/49979.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Herbert/services/trackbacks/49979.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Facade（外观）模式&nbsp;&nbsp;<a href='http://www.cppblog.com/Herbert/archive/2008/05/15/49979.html'>阅读全文</a><img src ="http://www.cppblog.com/Herbert/aggbug/49979.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Herbert/" target="_blank">Herbert</a> 2008-05-15 19:31 <a href="http://www.cppblog.com/Herbert/archive/2008/05/15/49979.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>