﻿<?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/CornerZhang/category/13796.html</link><description>生命的隐喻：自我意识产生于躯体，躯体产生于食物，食物源于物质，物质源于太阳辐射能。
&lt;P&gt;http://cyberzei.wordpress.com&lt;/P&gt;
</description><language>zh-cn</language><lastBuildDate>Sat, 28 Apr 2012 20:05:13 GMT</lastBuildDate><pubDate>Sat, 28 Apr 2012 20:05:13 GMT</pubDate><ttl>60</ttl><item><title>DoomEd Snapshot</title><link>http://www.cppblog.com/CornerZhang/archive/2012/04/28/173100.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Sat, 28 Apr 2012 15:08:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2012/04/28/173100.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/173100.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2012/04/28/173100.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/173100.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/173100.html</trackback:ping><description><![CDATA[<img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/cornerzhang/Untitled.png" width="864" height="854" /><img src ="http://www.cppblog.com/CornerZhang/aggbug/173100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2012-04-28 23:08 <a href="http://www.cppblog.com/CornerZhang/archive/2012/04/28/173100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Doom3源代码 code review 01</title><link>http://www.cppblog.com/CornerZhang/archive/2012/04/28/173010.html</link><dc:creator>Corner Zhang</dc:creator><author>Corner Zhang</author><pubDate>Sat, 28 Apr 2012 01:44:00 GMT</pubDate><guid>http://www.cppblog.com/CornerZhang/archive/2012/04/28/173010.html</guid><wfw:comment>http://www.cppblog.com/CornerZhang/comments/173010.html</wfw:comment><comments>http://www.cppblog.com/CornerZhang/archive/2012/04/28/173010.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/CornerZhang/comments/commentRss/173010.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/CornerZhang/services/trackbacks/173010.html</trackback:ping><description><![CDATA[<div>其整体结构不怎么面向对象<br /><br />以一份全局指针的方式访问某个系统模块或管理器，一切沿袭自C版本的idTech设计，如下<br /><br />// FileSystem.h<br /><br /><a title="class" href="http://www.cppblog.com/CornerZhang">class</a> idFileSystem {<br />public:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;virtual void&nbsp;&nbsp;&nbsp;Init( void ) = 0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;virtual void&nbsp;&nbsp;&nbsp;Shutdown( void ) = 0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// methed...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;virtual void&nbsp;&nbsp;&nbsp;ListFiles( ... ) = 0;<br /><br />};<br /><br />extern idFileSystem*&nbsp;&nbsp;&nbsp;fileSystem;<br /><br />// FileSystem.cpp<br />#include "FileSystem"<br /><br /><a title="class" href="http://www.cppblog.com/CornerZhang">class</a> idFileSystemLocal: public idFileSystem {<br />public:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;&nbsp;&nbsp;Init( void );<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;&nbsp;&nbsp;Shutdown( void );<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// methed...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;&nbsp;&nbsp;ListFiles( ... );<br /><br />};<br /><br />idFileSystemLocal&nbsp;&nbsp;&nbsp;fileSystemInstance;<br />idFileSystem*&nbsp;&nbsp;&nbsp;fileSystem = &amp;fileSystemInstance;<br /><br />void&nbsp;&nbsp;&nbsp;idFileSystemLocal::Init( void ) {<br />}<br /><br />void&nbsp;&nbsp;&nbsp;idFileSystemLocal::Shutdown( void ) {<br />}<br /><br />// methed...<br />void&nbsp;&nbsp;&nbsp;idFileSystemLocal::ListFiles( ... ) {<br />}<br /><br />然后其使用端代码如下:<br />fileSysem-&gt;Init();<br /><br />fileSystem-&gt;ListFile( files, .... );<br /><br />fileSystem-&gt;Shutdown();<br /><br />这种手法大量运用，很好的达到了子系统间的解耦！！<br />里面的idCommon, idCmdSystem, idRenderSystem, idSoundSystem, idCVarSystem, idGame等，都是这一套<br /><br />简单而有效的tip，这样以后的某个模块要做成动态库版本，只需通过获得这个接口指针就可</div><img src ="http://www.cppblog.com/CornerZhang/aggbug/173010.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/CornerZhang/" target="_blank">Corner Zhang</a> 2012-04-28 09:44 <a href="http://www.cppblog.com/CornerZhang/archive/2012/04/28/173010.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>