﻿<?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++博客-Fanze-随笔分类-设计模式</title><link>http://www.cppblog.com/fanze/category/20620.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 31 Jul 2013 14:35:52 GMT</lastBuildDate><pubDate>Wed, 31 Jul 2013 14:35:52 GMT</pubDate><ttl>60</ttl><item><title>单例模式</title><link>http://www.cppblog.com/fanze/archive/2013/07/31/202267.html</link><dc:creator>Fanze</dc:creator><author>Fanze</author><pubDate>Wed, 31 Jul 2013 14:28:00 GMT</pubDate><guid>http://www.cppblog.com/fanze/archive/2013/07/31/202267.html</guid><wfw:comment>http://www.cppblog.com/fanze/comments/202267.html</wfw:comment><comments>http://www.cppblog.com/fanze/archive/2013/07/31/202267.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/fanze/comments/commentRss/202267.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/fanze/services/trackbacks/202267.html</trackback:ping><description><![CDATA[<div>单例模式: 保证一个类仅有一个实例，并提供一个访问它的全局访问点。</div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#include&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">using</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; ">&nbsp;std&nbsp;;<br /><br />template&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;T</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;ST{<br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">:<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;T</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;&nbsp;GetInstance()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(m_pInstance&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;NULL){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_pInstance&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;T&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;m_pInstance&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #0000FF; ">protected</span><span style="color: #000000; ">:<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;T</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;m_pInstance&nbsp;;<br /><br />};<br /><br /></span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;\模板静态成员初始化</span><span style="color: #808080; "><br /></span><span style="color: #000000; ">template&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;T</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />T&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;&nbsp;ST</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;T</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">::m_pInstance&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(T</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)NULL&nbsp;;<br /><br /><br /></span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;AB<br />{<br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">:<br />&nbsp;&nbsp;&nbsp;&nbsp;AB(){<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">~</span><span style="color: #000000; ">AB(){<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&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;Init(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">AB::Init</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">endl;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />};<br /><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main(){<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080; ">///</span><span style="color: #008000; ">&nbsp;\TEST</span><span style="color: #808080; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">ST&lt;AB&gt;&nbsp;ab&nbsp;;</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;AB</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;pab&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;pab&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;ST</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">AB</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">::GetInstance()&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;pab&nbsp;=&nbsp;ab.GetInstance()&nbsp;;</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;pab</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">Init()&nbsp;;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">&nbsp;;<br />}</span></div><img src ="http://www.cppblog.com/fanze/aggbug/202267.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/fanze/" target="_blank">Fanze</a> 2013-07-31 22:28 <a href="http://www.cppblog.com/fanze/archive/2013/07/31/202267.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>