﻿<?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/azukixu/category/12893.html</link><description>边看边吃</description><language>zh-cn</language><lastBuildDate>Mon, 25 Jan 2010 10:18:43 GMT</lastBuildDate><pubDate>Mon, 25 Jan 2010 10:18:43 GMT</pubDate><ttl>60</ttl><item><title>逻辑流程的提炼 &amp; 使用多态</title><link>http://www.cppblog.com/azukixu/archive/2010/01/25/106410.html</link><dc:creator>Azuki</dc:creator><author>Azuki</author><pubDate>Mon, 25 Jan 2010 09:55:00 GMT</pubDate><guid>http://www.cppblog.com/azukixu/archive/2010/01/25/106410.html</guid><wfw:comment>http://www.cppblog.com/azukixu/comments/106410.html</wfw:comment><comments>http://www.cppblog.com/azukixu/archive/2010/01/25/106410.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/azukixu/comments/commentRss/106410.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/azukixu/services/trackbacks/106410.html</trackback:ping><description><![CDATA[比如创建删除MapIcon( 包括请求数据的异步等... )<br>虽然流程统一可以减少代码量<br>但有的时候全都走同一个流程的话, <br>当处理各种类型间的细微差别就很麻烦, <br>需要靠当前执行状态来判断应该采取哪种处理.<br>会增加各种条件判断和分支.<br>如果只有少量差别还好, <br>但如果差别较多会造成到处都是枝杈, <br>统一来得反而得不偿失<br><br>所以统一并不一定好, <br>关键在于统一的方式<br><br>私以为一个比较好的方式是多态<br>OO中一个很有利的武器<br>这就要考验系统的设计了<br>怎么才能更好的发挥多态的作用<br>不通过外部判断来让其自身做出选择<br><br>如果某流程靠多态不足以解决, <br>最好是给一定的配置组,( 比如vector&lt;string&gt; )<br>比如更新后节点是否删除, 比如超过高度限制是否更换地图...<br>将配置组传入, 在流程中各取所需, 进行操作<br>这里要注意const引用啦~不然会拷贝很多次<br><br>此外, 把判断挪到越上层越好, <br>在上层判断能使底层支持更多的东西,<br>是底层更干净更纯粹<br><br><br> <img src ="http://www.cppblog.com/azukixu/aggbug/106410.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/azukixu/" target="_blank">Azuki</a> 2010-01-25 17:55 <a href="http://www.cppblog.com/azukixu/archive/2010/01/25/106410.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开放封闭原则</title><link>http://www.cppblog.com/azukixu/archive/2010/01/25/106408.html</link><dc:creator>Azuki</dc:creator><author>Azuki</author><pubDate>Mon, 25 Jan 2010 09:43:00 GMT</pubDate><guid>http://www.cppblog.com/azukixu/archive/2010/01/25/106408.html</guid><wfw:comment>http://www.cppblog.com/azukixu/comments/106408.html</wfw:comment><comments>http://www.cppblog.com/azukixu/archive/2010/01/25/106408.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/azukixu/comments/commentRss/106408.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/azukixu/services/trackbacks/106408.html</trackback:ping><description><![CDATA[出自 - 岩哥<br>开放封闭原则<br>对添加开放,对修给封闭<br>减少分支判断<br>需求变更只需要添加代码,做少量修改甚至不修改,添加不算修改<br>较严格的说法<br>应该是对类型的添加开放<br>加入把算法出来,那添加某个特定的处理只是添加算法类<br><br>相关思路, 把数据和算法分离<br><br>算法类, 就不需要一个常驻内存的实例化对象了. <br>需要用到的时候, 直接Utility util; util-&gt;doSth(param);就好了<br> <img src ="http://www.cppblog.com/azukixu/aggbug/106408.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/azukixu/" target="_blank">Azuki</a> 2010-01-25 17:43 <a href="http://www.cppblog.com/azukixu/archive/2010/01/25/106408.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>