﻿<?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/cqm/</link><description>大数据搜索，分布式服务，模式设计，系统架构设计</description><language>zh-cn</language><lastBuildDate>Mon, 06 Apr 2026 06:09:29 GMT</lastBuildDate><pubDate>Mon, 06 Apr 2026 06:09:29 GMT</pubDate><ttl>60</ttl><item><title>我在程序模式设计上的一个想法不知道算不算一个模式</title><link>http://www.cppblog.com/cqm/archive/2011/01/11/DataShop.html</link><dc:creator>sapielion</dc:creator><author>sapielion</author><pubDate>Tue, 11 Jan 2011 07:58:00 GMT</pubDate><guid>http://www.cppblog.com/cqm/archive/2011/01/11/DataShop.html</guid><wfw:comment>http://www.cppblog.com/cqm/comments/138337.html</wfw:comment><comments>http://www.cppblog.com/cqm/archive/2011/01/11/DataShop.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/cqm/comments/commentRss/138337.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cqm/services/trackbacks/138337.html</trackback:ping><description><![CDATA[&nbsp; 我们在程序开发中，也许经常碰到这样的情况，在一个业务流程中会调用很多不同的函数。<br><br>&nbsp;&nbsp;&nbsp; 例如：<br>//---------------------------------------<br>&nbsp;&nbsp;&nbsp; func1(param1);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;func2(param21,param22);<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; func3(param31,param32,param33);<br><br>//----------------------------------------<br>&nbsp;&nbsp;&nbsp;&nbsp; 而在上面三个函数中每个函数的内部很可能都查询访问了同一个数据，这样就造成了资源的浪费，<br>有没有解决办法呢？<br>&nbsp;&nbsp;&nbsp;&nbsp; 我想了一个解决方法，我命名为&#8220;数据商店&#8221;。&#8220;数据商店&#8221;：从名字即可看出思路，在整个业务流程中创建一个二重hash表，先按类型做外层hash表的key，而后按每个对象关键字来做内层hash表的key。用这种结构把数据暂存起来以便业务流程中每个函数访问。那怎么在业务流程中的每个函数内部访问呢？<br>把存储数据的二重hash表做为参数传给每个函数。<br>下面是伪代码：<br>//-----------------------------------------------------------------<br><font color=#000080>#include</font> &lt;map&gt;<br><font color=#000080>#include</font> &lt;string&gt;<br><br><span style="COLOR: #000000"><font color=#a52a2a>using</font> <font color=#a52a2a>namespace</font></span> std;<br><br>typedef struct DataNode<br>{<br>&nbsp;&nbsp;&nbsp;string type;<br>&nbsp;&nbsp;&nbsp;map&lt;string,void*&gt; goods;<br>} Chest;<br><br>map&lt;string,Chest&gt; shop;<br><br>func1(param1,&amp;shop);<br><br>func2(param21,param22,&amp;shop);<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>func3(param31,param32,param33,&amp;shop);<br>//-----------------------------------------------------------------<br>在每个函数中在访问请求数据前，都在shop中搜索要请求的数据在shop中是否存在，如果shop中存在就<br>直接取出，不必再访问请求数据节省了资源和时间。<br>这个解决方法只在一个业务流程中使用，不作为类似缓存或持久层来使用。请大家给些意见，现在还没有完善。<br><br><br><br><br>
<img src ="http://www.cppblog.com/cqm/aggbug/138337.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cqm/" target="_blank">sapielion</a> 2011-01-11 15:58 <a href="http://www.cppblog.com/cqm/archive/2011/01/11/DataShop.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>