<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://babaozhou.spaces.live.com/mmm2008-07-24_12.50/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fbabaozhou.spaces.live.com%2fcategory%2f%e4%bb%81%e8%a8%80%e5%88%a9%e5%8d%9a%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>瞎扯淡: 仁言利博</title><description /><link>http://babaozhou.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&amp;_c=BlogPart&amp;partqs=cat%25E4%25BB%2581%25E8%25A8%2580%25E5%2588%25A9%25E5%258D%259A</link><language>en-US</language><pubDate>Thu, 28 Aug 2008 04:49:04 GMT</pubDate><lastBuildDate>Thu, 28 Aug 2008 04:49:04 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><cf:parentRSS>http://babaozhou.spaces.live.com/blog/feed.rss</cf:parentRSS><live:type>blogcategory</live:type><live:identity><live:id>4841837938742446725</live:id><live:alias>babaozhou</live:alias></live:identity><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>5年,从3500到700万</title><link>http://babaozhou.spaces.live.com/Blog/cns!4331A9F3BEC0CA85!736.entry</link><description>&lt;div&gt;&lt;a href="http://dzh.mop.com/topic/readSub.jsp?sid=5707346&amp;amp;page=0"&gt;一篇非常非常非常好的文章&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;有点长...&lt;/div&gt;
&lt;div&gt;想看的人可以去看下..&lt;/div&gt;
&lt;div&gt;我希望能到我这来的人都去看下..&lt;/div&gt;
&lt;div&gt;讲诉的是一个从新疆到上海的男人奋斗历程&lt;/div&gt;
&lt;div&gt;不要管它的真实性..只希望你把它当真实的看&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;其中总结的句子拿来转一下,我不知道MSN SPACE如何置顶贴,如果可以.此文一定置顶&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;1， 人生就是投资和收益的人生。如果你有钱，就投入金钱；如果你没有金钱，而有经验和能力，就投入经验和能力；如果你既没有金钱，也没有经验和能力，但是你有热情、勤奋和努力，那就投入热情、勤奋和努力。如果你既没有金钱，也没有经验和能力，连热情、勤奋和努力也没有，那就别想这些了。 &lt;br&gt;&lt;br&gt;2， 比赚钱更重要的是找到你自己的赚钱动力；&lt;br&gt;&lt;br&gt;3， 比金钱重要的是时间，比时间重要的是时机，比时机重要的是你要抓住时机的决心，动力和准备！ &lt;br&gt;&lt;br&gt;4， 别好高骛远，机会一般都在你看不起眼的角落里藏着； &lt;br&gt;&lt;br&gt;5， 舍得投入； &lt;br&gt;&lt;br&gt;6， 决定一下，行动要快； &lt;br&gt;&lt;br&gt;7， 永远尽可能准备好资源，随时准备抓住机会，要快！ &lt;br&gt;&lt;br&gt;8， 待人以诚，对人以善。有时候，机会是别人给的；&lt;br&gt;&lt;br&gt;9， 给别人的比别人期待的多一些（李嘉诚的）； &lt;br&gt;&lt;br&gt;10， 赚钱有个普遍的法则：多做，快做，动脑筋变着花样做，就是别跟着别人一样做。 &lt;br&gt;&lt;br&gt;11， 合理规划有钱以后的日子，会让你走的更远； &lt;br&gt;&lt;br&gt;12， 有信仰，有原则，有爱心。&lt;br&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4841837938742446725&amp;page=RSS%3a+5%e5%b9%b4%2c%e4%bb%8e3500%e5%88%b0700%e4%b8%87&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=babaozhou.spaces.live.com&amp;amp;GT1=babaozhou"&gt;</description><comments>http://babaozhou.spaces.live.com/Blog/cns!4331A9F3BEC0CA85!736.entry#comment</comments><guid isPermaLink="true">http://babaozhou.spaces.live.com/Blog/cns!4331A9F3BEC0CA85!736.entry</guid><pubDate>Sun, 28 Aug 2005 05:39:15 GMT</pubDate><slash:comments>4</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://babaozhou.spaces.live.com/blog/cns!4331A9F3BEC0CA85!736/comments/feed.rss</wfw:commentRss><wfw:comment>http://babaozhou.spaces.live.com/Blog/cns!4331A9F3BEC0CA85!736.entry#comment</wfw:comment><dcterms:modified>2006-04-29T12:52:05Z</dcterms:modified></item><item><title>(转载)一篇很好的flash oop教程</title><link>http://babaozhou.spaces.live.com/Blog/cns!4331A9F3BEC0CA85!401.entry</link><description>&lt;p&gt;本来想放进链接的..但又实在怕这篇文章被删除..还是转到自己blog上比较放心..
&lt;p&gt;&lt;a title="返回作者主页" href="http://www.5dblog.com/vip/5shan/"&gt;5shan&lt;/a&gt; 发表在 &lt;a title="返回这个分类" href="http://www.5dblog.com/vip/5shan/index.asp?cid=5158"&gt;我闪推荐&lt;/a&gt; 
&lt;p&gt;有人问我flash的as应该怎么写，我可以很负责任地告诉他，想怎么写就怎么写，因为as以及flash内部的构成模式决定了它的高度自由化。理论上来说，用按钮的on事件，加上stop()，play()，gotoAndStop()，gotoAndPlay()，就可以实现一个flash里大部分的逻辑关系，而且源代码简单易懂。但是大多数人不会这么做，是因为这种方法实在太让人敬佩。稍有常识的程序员都会知道面对对象与面对过程的区别。Flash的编程虽然只是以脚本的形式出现，并且还很不完善，比如，没有多继承，但已经初步体现了oop的思想。这篇文章现在总结一下flash中面对对象的设计模式问题，以及一些自创的思路。&lt;br&gt;&lt;br&gt;设计模式是美国一位建筑大师（同时也是信息工程师，画家，机械工程师…的）克里斯蒂安.亚历山大首先提出来的，很快被软件界的技术员们所接受推广，成为软件工程里至高无上的法则之一（有兴趣的人可以找他的《建筑的永恒之道》一书看看，相信会受益非浅）。简单地说就是在面对对象的基础上，包括面对对象，把要设计的整体的各个部分模式化，层次化，细粒度化，高度复用化，可控化，人性化。其中至高无上的原则是建立在需求的基础之上，也就是说，无论做什么，人的需求要放在第一位考虑，从这个角度考虑整个系统是否足够合理。这门学问是非常有趣的，尤其在flash中，可以应用到很多很好玩的实例中去。下面我按照一些通用的设计模式，举例说明，有错误的地方，敬请高手指正： 
&lt;p&gt;&lt;b&gt;1．抽象工厂模式（Abstract Factory）&lt;/b&gt;&lt;br&gt;食堂里吃的东西很多，而我只想吃一样，那么食堂这个概念对我来说就是个抽象工厂，每个窗口可以看成它的一个具体实现，我要做的就是，去食堂，找到那个窗口，从窗口里买我要吃的东西。&lt;br&gt;&lt;br&gt;举例：flash前台与asp后台的交互，访问某个动态页面，从数据库里取出需要的数据，通常的做法是在后台就把数据集解析成xml字符串，再送给swf。每个业务逻辑模块，所取出的数据结构，也就是xml的结构是不一样的，我们要针对各个具体的业务逻辑，对相应的xml字符串解析，转换成可供显示的数组。也要把flash里文本输入的内容转换成 xml字符串，提交给后台也面&lt;br&gt;&lt;br&gt;AbstractFactory.as&lt;br&gt;//抽象工厂的接口&lt;br&gt;Interface AbstractFactory{&lt;br&gt;//生成xml解析工厂的具体实现&lt;br&gt;function createXmlParseFactory();&lt;br&gt;}&lt;br&gt;&lt;br&gt;XMLParserGetFactory.as&lt;br&gt;//生成解析读入的xml的对象的工厂&lt;br&gt;class XMLParserGetFactory implements AbstractFactory.{&lt;br&gt;var xmlParser;&lt;br&gt;function XMLParserGetFactory(str:String){&lt;br&gt;//生成解析器的具体实现，在后面会提到&lt;br&gt;}&lt;br&gt;function createXmlParser(){&lt;br&gt;return xmlParser;&lt;br&gt;}&lt;br&gt;}&lt;br&gt;XMLParserPostFactory.as&lt;br&gt;//生成解析输出的xml的对象的工厂&lt;br&gt;class XMLParserPostFactory implements AbstractFactory.{&lt;br&gt;var xmlParser;&lt;br&gt;function XMLParserPostFactory(str:String){&lt;br&gt;//生成解析器的具体实现&lt;br&gt;}&lt;br&gt;function createXmlParser(){&lt;br&gt;return xmlParser;&lt;br&gt;}&lt;br&gt;}&lt;br&gt;&lt;br&gt;这样，我们读入某个xml字符串时，在onLoad里面加入&lt;br&gt;//生成对留言板的留言列表解析的工厂&lt;br&gt;var xmlParser=new XMLParserGetFactory(“xmlParseGuestbookList”)&lt;br&gt;xmlParser= XMLParserGetFactory. createXmlParser()&lt;br&gt;&lt;br&gt;备注：抽象工厂模式是软件工程里最常用的设计模式之一，实现过程在于，需要某个类的实例时，通过某个工厂创建，而不是直接创建，坦白地说，它加大了开发工作量，但是对程序的层次性变得分明和降低耦合度有极大帮助。 
&lt;p&gt;&lt;b&gt;2．生成器模式（builder）&lt;/b&gt;&lt;br&gt;还是那个说法，我要吃东西就去相应的食堂窗口，但我不能吃食堂窗口，窗口里的东西也许不少，我要跟师傅说，要这个，这个，还有这个。&lt;br&gt;&lt;br&gt;举例：我已经建立了 xml解析器的工厂，现在要返回解析器本身，就让工厂创建，返回给我。&lt;br&gt;&lt;br&gt;XMLParserGetFactory.as&lt;br&gt;//生成解析读入的xml的对象的工厂&lt;br&gt;class XMLParserGetFactory implements AbstractFactory.{&lt;br&gt;var xmlParser;&lt;br&gt;function XMLParserGetFactory(str:String){&lt;br&gt;//如果要求留言板列表解析器，就生成一个&lt;br&gt;if(str==” xmlParseGuestbookList”){&lt;br&gt;xmlParser=new xmlParserGuestbookList();&lt;br&gt;}&lt;br&gt;}&lt;br&gt;function createXmlParser(){&lt;br&gt;//返回所要求的解析器&lt;br&gt;return xmlParser;&lt;br&gt;}&lt;br&gt;}&lt;br&gt;&lt;br&gt;AbstractXmlParser.as&lt;br&gt;//抽象xml解析器&lt;br&gt;Interface AbstractXmlParser{&lt;br&gt;function ParseXml();&lt;br&gt;}&lt;br&gt;xmlParserGuestBookList.as&lt;br&gt;//留言板列表解析器&lt;br&gt;Class xmlParserGuestBookList implements AbstractXmlParser{&lt;br&gt;//把xml字符串里的内容解析到一堆数组里&lt;br&gt;function ParseXml(xml:XML,arrayID:Array,arrayTitle:Array){&lt;br&gt;//具体循环操作&lt;br&gt;}&lt;br&gt;}&lt;br&gt;&lt;br&gt;使用的时候：&lt;br&gt;var xmlParser=new XMLParserGetFactory(“xmlParseGuestbookList”)&lt;br&gt;xmlParser= XMLParserGetFactory. createXmlParser(xml,arrayID,arrayTitle); 
&lt;p&gt;&lt;b&gt;3．工厂方法模式（Factory Method）&lt;/b&gt;&lt;br&gt;我到了食堂窗口，如果师傅跟那儿抽烟，我还是吃不着东西。我说：师傅，打饭！师傅才会完成打饭这一动作。这是工厂方法模式，抽象工厂的实现通常用工厂方法模式来完成。&lt;br&gt;&lt;br&gt;举例：还是上一条，我本来想用一句话带一个参数就实现具体xml解析器的实现，无奈构造函数没有返回值，所以必须用&lt;br&gt;xmlParser= XMLParserGetFactory. createXmlParser(xml,arrayID,arrayTitle);&lt;br&gt;实现。&lt;br&gt;&lt;br&gt;备注：抽象工厂模式，生成器模式和工厂方法模式需要灵活应用。 
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;b&gt;4．单件模式（singleton）&lt;/b&gt;&lt;br&gt;我前面一个人买了一条巨大的鸡腿，我说我也要一条，师傅说，就这一条&lt;br&gt;&lt;br&gt;举例：单件模式的应用是相当广泛的，它确保每个实例在全局范围内只被创建一次，我们flash里的mc大多数是单件。内核里的核心组件也只是单件，比如我的消息映射列表（见后）。&lt;br&gt;按照单件模式的严格定义，应该让类负责保存它的唯一实例。但是我在Flash里还想不到怎么实现这一点，或者实现它的意义所在，但另外一点我们可以做到，就是在全局范围内只提供该对象的唯一访问点。这可以由层次关系做到，把对该对象的访问具体实现全部封装在下层，只给上层提供唯一的访问点（原因是，上层不知道这个单件的具体信息，比如路径）。&lt;br&gt;看我内核文件的一部分：&lt;br&gt;Core.as&lt;br&gt;//内核&lt;br&gt;class Core {&lt;br&gt;var strucGlobalParam:ConfigVariables;&lt;br&gt;//站点信息&lt;br&gt;var xmlConfig:XML;&lt;br&gt;//站点信息的xml化对象&lt;br&gt;var ArrayStructureInitial:Array;&lt;br&gt;//用来提供给loadObject对象的数组&lt;br&gt;var ArrayForBtn:Array;&lt;br&gt;//用来初始化导航条组件的数组&lt;br&gt;var objInitial:loadObject;&lt;br&gt;//读取影片的对象&lt;br&gt;var objMessageMap:MessageMap;&lt;br&gt;//消息映射组件&lt;br&gt;……&lt;br&gt;}&lt;br&gt;这是我的内核类也就是全站最核心类的数据结构。里面的数据只有通过下层的BasicMovie，OriginalFunctionObject等类（见后）直接访问。&lt;br&gt;&lt;br&gt;备注，核心思想是，确保只有一个。
&lt;p&gt;&lt;b&gt;5．原型模式（protoType）&lt;/b&gt;&lt;br&gt;到小炒窗口，看前面的哥们炒的青椒炒肉不错的样子。“师傅，我也要这样的。”&lt;br&gt;&lt;br&gt;举例：这对flash的用户来说再熟悉不过了，我们经常用duplicateMovieClip()和&lt;br&gt;attachMovie()这两个函数。按照一个原型复制相应的实例，各自执行自己的动作。在我的blog列表，导航条的生成。。几乎用得到多项数据的地方就要用原型模式。
&lt;p&gt;&lt;b&gt;6.责任链模式&lt;/b&gt;&lt;br&gt;&lt;b&gt;7.中介者模式&lt;/b&gt;&lt;br&gt;&lt;b&gt;8.观察者模式&lt;/b&gt;&lt;br&gt;食堂里厨房最远的窗口没熬白菜了，要告诉厨房，快送过来。&lt;br&gt;责任链模式：一个窗口一个窗口地传话，一直传到食堂，食堂一看不妙，赶快做好送过去。&lt;br&gt;中介者模式：专门派一个人负责传话，任何窗口没菜了，就要这个人赶快去厨房催。&lt;br&gt;观察者模式：厨房那边派一个盯着，看哪个窗口没菜了就开始大声嚷嚷。&lt;br&gt;&lt;br&gt;举例：之所以要把这三个设计模式放在一块儿，是因为我在我的站里面结合这三者建立了一个好玩的东西，可以说是我的网站的核心所在。它解决了我的flash里面各个mc的通信问题。&lt;br&gt;比如，影片A放完了，要通知影片B开始播放，直接的做法是在A的最后一帧，写从A到B的相对路径或B的绝对路径，让B play()。这样做A和B的耦合性是相当高的，也就是说，相互依赖程度太高。运用设计模式的解决方案如下：&lt;br&gt;&lt;br&gt;MessageMap.as&lt;br&gt;//消息映射类&lt;br&gt;class MessageMap extends Object {&lt;br&gt;var Message:String;&lt;br&gt;var MessageWatcher:Function;&lt;br&gt;var Target;&lt;br&gt;var MessageList:Array;&lt;br&gt;var Num_Msg:Number;&lt;br&gt;function MessageMap() {&lt;br&gt;Num_Msg = 0;&lt;br&gt;MessageList = new Array();&lt;br&gt;Message = &amp;quot;HANG_UP&amp;quot;;&lt;br&gt;MessageWatcher = function (prop, oldVar, newVar, Param) {&lt;br&gt;for (var i = 0; i&amp;lt;Num_Msg+1; i++) {&lt;br&gt;if (newVar == MessageList[i][0]) {&lt;br&gt;MessageList[i][1].apply(MessageList[i][3], MessageList[i][2]);&lt;br&gt;if (!MessageList[i][4]) {&lt;br&gt;MessageList.splice(i, 1);&lt;br&gt;Num_Msg--;&lt;br&gt;i-=1;&lt;br&gt;}&lt;br&gt;}&lt;br&gt;}&lt;br&gt;&lt;br&gt;};&lt;br&gt;this.watch(&amp;quot;Message&amp;quot;, MessageWatcher, &amp;quot;test&amp;quot;);&lt;br&gt;}&lt;br&gt;function SendMessage(Msg:String, mc:MovieClip) {&lt;br&gt;Message = Msg;&lt;br&gt;}&lt;br&gt;function UpdateMessageMap(Msg:String, objFunction:Function, ArrayParam:Array, objRefer,IsMultiUsed:Boolean) {&lt;br&gt;MessageList[Num_Msg] = new Array();&lt;br&gt;MessageList[Num_Msg][0] = new String();&lt;br&gt;MessageList[Num_Msg][0] = Msg;&lt;br&gt;MessageList[Num_Msg][1] = new Function();&lt;br&gt;MessageList[Num_Msg][1] = objFunction;&lt;br&gt;MessageList[Num_Msg][2] = new Array();&lt;br&gt;MessageList[Num_Msg][2] = ArrayParam;&lt;br&gt;MessageList[Num_Msg][3] = objRefer;&lt;br&gt;MessageList[Num_Msg][4] = IsMultiUsed;&lt;br&gt;Num_Msg++;&lt;br&gt;}&lt;br&gt;function DeleteMessageMap(objRefer) {&lt;br&gt;for (var i = 0; i&amp;lt;Num_Msg; i++) {&lt;br&gt;if (MessageList[i][2] == objRefer) {&lt;br&gt;MessageList.splice(i, 1);&lt;br&gt;Num_Msg--;&lt;br&gt;}&lt;br&gt;}&lt;br&gt;}&lt;br&gt;}&lt;br&gt;&lt;br&gt;class SubTemplateMovie extends BaseMovie {&lt;br&gt;var MovieRemoveFunction:Function;&lt;br&gt;function SubTemplateMovie() {&lt;br&gt;this.stop();&lt;br&gt;MovieStartFunction = function () {&lt;br&gt;Lock();&lt;br&gt;this.play();&lt;br&gt;};&lt;br&gt;MovieEndFunction = function () {&lt;br&gt;Lock();&lt;br&gt;this.play();&lt;br&gt;};&lt;br&gt;&lt;br&gt;MovieRemoveFunction = function () {&lt;br&gt;this.stop();&lt;br&gt;SendMsg(&amp;quot;SUB_TEMPLATE_REMOVED&amp;quot;, this);&lt;br&gt;_parent.unloadMovie();&lt;br&gt;};&lt;br&gt;MovieMainFunction = function () {&lt;br&gt;stop();&lt;br&gt;SendMsg(&amp;quot;SUB_TEMPLATE_OPEN&amp;quot;, this);&lt;br&gt;};&lt;br&gt;UpdateMessage(&amp;quot;LOADING_BAR_OVER&amp;quot;, MovieStartFunction, null, this, false);&lt;br&gt;UpdateMessage(&amp;quot;BACK_TO_INDEX&amp;quot;, MovieEndFunction, null, this, false);&lt;br&gt;}&lt;br&gt;}&lt;br&gt;&lt;br&gt;大概机制就是，影片提前提交一个数据结构，声明，如果有影片提交这条消息，就执行这条函数。原理在于，发送消息，实际上是把消息映射的一个变量赋值，由于消息映射继承自object类，可以用watch方法对该变量进行监视，一旦改变，在已经提交上来的消息映射列表里检查，如果有，执行对应函数。实际上这也造成了一定程度的耦合性，但是我们已经成功地把耦合性控制在了下级类，上级子类完全不用理会这一套消息机制的实现过程。&lt;br&gt;&lt;br&gt;这个机制可以让我们对oop的真正目的有更深的看法。举例说明，影片A播放完了，就声明自己播放完了，至于我播完了你要干什么，不是我的事，我不控制你。所谓的降低耦合度是个相对概念，别忘了在计算机最底层，耦合度还是一样，cpu总是不断的直接或间接寻址，但我们需要做的是，改变系统的拓扑结构，把耦合度控制在某一个范围之内。&lt;br&gt;&lt;br&gt;整个消息映射类相当于一个中介者，内部生成一个观察器，一旦触发消息，以责任链的方式执行。
&lt;p&gt;&lt;b&gt;9.桥接模式（Bridge）&lt;/b&gt;&lt;br&gt;菜太淡，不合有些人的胃口，所以要求食堂的师傅，专门开一个窗口，专门在做好的菜里多加些辣椒。&lt;br&gt;&lt;br&gt;我在自己的站里运用了桥接模式：所有的影片都继承自我定义的BasicMovie 类（BasicMovie继承自MovieClip类），但是在四个下级栏目的影片里，需要定义相同的方法和事件来响应消息，BasicMovie没有这些函数，不符合要求，这时候，在四个影片里都写一遍是愚蠢的，我又写了一个SubTemplateMovie类继承自BaseMovie，里面加进一些通用的方法，然后四个下级模板影片都继承它，这样大大简化了后期开发。&lt;br&gt;&lt;br&gt;BasicMovie.as&lt;br&gt;//基类影片&lt;br&gt;/所有影片的原始类，一切影片的父类都继承此类而来&lt;br&gt;class BaseMovie extends MovieClip {&lt;br&gt;var isLocked:Boolean;&lt;br&gt;//初始类开始影片函数&lt;br&gt;var MovieStartFunction:Function;&lt;br&gt;//初始类影片主功能函数&lt;br&gt;var MovieMainFunction:Function;&lt;br&gt;//初始类结束影片函数&lt;br&gt;var MovieEndFunction:Function;&lt;br&gt;var GlobalParam&lt;br&gt;//初始类构造函数&lt;br&gt;function BaseMovie() {&lt;br&gt;}&lt;br&gt;//&lt;br&gt;&lt;br&gt;//发送消息&lt;br&gt;function SendMsg(Msg:String, Mc:MovieClip) {&lt;br&gt;_root.objCore.objMessageMap.SendMessage(Msg, Mc);&lt;br&gt;}&lt;br&gt;//添加消息映射&lt;br&gt;function UpdateMessage(Msg:String, MsgMapFunction:Function, ArrayParam, obj, IsMultiUsed) {&lt;br&gt;_root.objCore.objMessageMap.UpdateMessageMap(Msg, MsgMapFunction, ArrayParam, obj, IsMultiUsed);&lt;br&gt;}&lt;br&gt;//删除消息映射&lt;br&gt;function DeleteMessage(obj) {&lt;br&gt;_root.objCore.objMessageMap.DeleteMessageMap(obj);&lt;br&gt;}&lt;br&gt;function GetGlobalParam() {&lt;br&gt;GlobalParam=_root.objCore.strucGlobalParam;&lt;br&gt;}&lt;br&gt;}&lt;br&gt;&lt;br&gt;SubTemplateMovie.as&lt;br&gt;//下级模板影片类&lt;br&gt;class SubTemplateMovie extends BaseMovie {&lt;br&gt;var MovieRemoveFunction:Function;&lt;br&gt;function SubTemplateMovie() {&lt;br&gt;this.stop();&lt;br&gt;MovieStartFunction = function () {&lt;br&gt;Lock();&lt;br&gt;this.play();&lt;br&gt;};&lt;br&gt;MovieEndFunction = function () {&lt;br&gt;Lock();&lt;br&gt;this.play();&lt;br&gt;};&lt;br&gt;&lt;br&gt;MovieRemoveFunction = function () {&lt;br&gt;this.stop();&lt;br&gt;SendMsg(&amp;quot;SUB_TEMPLATE_REMOVED&amp;quot;, this);&lt;br&gt;_parent.unloadMovie();&lt;br&gt;};&lt;br&gt;MovieMainFunction = function () {&lt;br&gt;stop();&lt;br&gt;SendMsg(&amp;quot;SUB_TEMPLATE_OPEN&amp;quot;, this);&lt;br&gt;};&lt;br&gt;UpdateMessage(&amp;quot;LOADING_BAR_OVER&amp;quot;, MovieStartFunction, null, this, false);&lt;br&gt;UpdateMessage(&amp;quot;BACK_TO_INDEX&amp;quot;, MovieEndFunction, null, this, false);&lt;br&gt;}&lt;br&gt;}&lt;br&gt;注（关于消息映射机制看 责任链模式）
&lt;p&gt;&lt;b&gt;10.适配器模式（Adapter）&lt;/b&gt;&lt;br&gt;我要一碗汤，但是只有纸饭盒，还没勺，所以食堂的师傅给了我一次性的汤碗和勺，这叫适配器。&lt;br&gt;&lt;br&gt;适配器解决的是某一个类的对外接口不合用的问题，可能是参数或者返回值类型不符等问题造成的，这时候我们需要在工作对象和这个类之间加一层间接的层次。&lt;br&gt;这个模式我在底层的数据交换层用过。我说过，flash和asp.net之间交换数据全以xml为载体。返回xml在底层只有三层，数据库操作，数据操作，数据显示，由数据操作层返回给数据显示层一个xml字符串就可以了。然后我就遇到一个小问题，在另一方面，我需要提交数据到数据库，也是提交一个xml字符串，但是我需要数据库里对应的表的数据集的xml表现形式的xsd验证！（一口气说完，差点没憋死）。就是说我至少需要取出这个表里的一条记录，问题在于，我封装的类从来只返回xml，没有返回xsd的。解决办法就是适配器，新建一个项目，加了一层专用于获得xml验证格式，这样就完成了不同接口之间的转换。&lt;br&gt;&lt;br&gt;备注：适配器和桥接很象，都是在已有类不符合要求的时候，加入一层间接的元素以达到目的。不同的是适配器是解决不兼容接口之间的转换，桥接一般不涉及这个问题，只是完成一个一对多的转换。
&lt;p&gt;&lt;b&gt;11.外观模式（Facade）&lt;/b&gt;&lt;br&gt;每天都要去食堂，每个人去不同的窗口吃不同的菜，很累，今天全寝室推举猴子去打饭：&lt;br&gt;你吃这个，三两饭，我吃那个，五两饭，所有人都只跟猴子一个人交涉，食堂所有的师傅也只见猴子一个人。&lt;br&gt;&lt;br&gt;举例：这个模式在程序的上下层的通信之间可以应用得十分广泛。Asp的每个模块要去不同的数据，访问数据库的不同表，就要跟不同的下层数据访问组件打交道。就是说，每个mc模块必须知道，我要去哪个具体的数据访问组件取数据。每个模块要维持自己的一个，至少是字符串。&lt;br&gt;如果运用外观模式。我们可以让所有的需要数据交互的mc访问同一个aspx页面，比如getStrXml.aspx。只要传送一个标示符，就可以通知这个唯一的取数据的叶面，访问哪个下层组件获取数据。下层组件不知道哪个mc要求数据，mc也不知道数据的具体来源，这样，上下层之间互相都显得不透明。这就降低了耦合度。
&lt;p&gt;&lt;b&gt;12.代理模式（Proxy）&lt;/b&gt;&lt;br&gt;可能我们不是每个人每天都想吃饭，所以我们要求猴子每天中午必须在寝室，如果我们要吃，他就去，如果我们都不吃，他爱干嘛干嘛。&lt;br&gt;&lt;br&gt;举例：这恐怕是每个人在flash里都会无意中用到的模式。比如，一个网站，它的下级栏目不用在整个网站初始化的时候一开始就读进来，但是我们要确保，在浏览者想看并且点击导航条上的某个按钮时，能够正确地读进相应的影片文件，前提是，我们必须在内部保留一个索引，可以称作代理。通常是一个空mc
&lt;p&gt;&lt;b&gt;13.策略模式（strategy）&lt;/b&gt;&lt;br&gt;我每天先在食堂找座位，再打饭，再打菜，再买杯酸奶。这已经模式化。要是食堂有服务员，我也会要他这么做。&lt;br&gt;&lt;br&gt;举例，策略模式是把一系列的算法封装起来，形成一个类。这个模式几乎是随时随地都可以整合到别的模式里去的，我的那一堆xml解析器实际上就是策略模式的应用，这个模式还应用到我网站的下层，因为flash提交给aspx页面的数据也是xml字符串，下层模块也需要相应的解析算法。同样的，我把对xml的解析封装进了一个类。&lt;br&gt;&lt;br&gt;//Cs文件里的解析函数&lt;br&gt;&lt;br&gt;Class DataModel.BlogMsgs{&lt;br&gt;…&lt;br&gt;Public DataSet parseXML(string strXml){&lt;br&gt;DataSet ds=new DataSet(); &lt;br&gt;//。。把xml装载到DataSet 里&lt;br&gt;Return ds&lt;br&gt;}&lt;br&gt;…&lt;br&gt;}
&lt;p&gt;&lt;b&gt;14.享元模式（Flyweight）&lt;/b&gt;&lt;br&gt;东西不够吃？给你摆20面镜子~&lt;br&gt;师傅，东西还是只有一份。。。&lt;br&gt;&lt;br&gt;关于这个模式十分抱歉，我暂时还没想到在flash里面的实现。需要举例说明的是，浏览器的机制是，在有大量文字的英文文档里，相同的字母共享一个Flyweight，在内存里其实只占一份空间，然后在文档不同的地方显示，这样对于大量细粒度的效果来说，可以节省很多资源。有哪位同志想到了请一定告诉我，不胜感激。
&lt;p&gt;&lt;b&gt;15.访问者模式（Visitor）&lt;/b&gt;&lt;br&gt;只要愿意，我随时都可以跑到哪个窗口打要吃的东西，前提是，我必须跑这一趟。&lt;br&gt;&lt;br&gt;举例：我说过，我的所有mc都继承自BasicMovie这个类，但不是我的所有mc都要从后来获取数据库数据。获取数据库数据所要访问的信息，比如ip，路径，文件保存在配置文件里，初始化的时候读入内核，并且只有内核那里有一份。在BasicMovie里加入对这些全局变量的引用是不合适的，因为只有少数mc要用到，而且由于某些原因我无法再使用桥接模式（我已经有了SubTemplateMovie，不能多继承），所以我用了访问者模式。&lt;br&gt;&lt;br&gt;BasicMovie.as&lt;br&gt;&lt;br&gt;//获取全局变量&lt;br&gt;function GetGlobalParam() {&lt;br&gt;GlobalParam=_root.objCore.strucGlobalParam;&lt;br&gt;}&lt;br&gt;&lt;br&gt;如果上级mc不执行这个函数，是不能获取全局变量的，如果要用，就执行。&lt;br&gt;也就是说，需要的时候，我去访问它。&lt;br&gt;&lt;br&gt;备注：声明一个visit操作，使得访问者可以正确访问需要的类。
&lt;p&gt;&lt;b&gt;16.状态模式（state）&lt;/b&gt;&lt;br&gt;我今天想吃面，师傅问我：要什么料？西红柿鸡蛋，排骨还是牛肉？&lt;br&gt;&lt;br&gt;举例：状态模式是指将对象当前的某些状态局部化，当对象改变状态时，看起来好像改变了类。例子还是我的滚动条。如果要滚动的是文本框，就要引用一个TextField的Scroll,maxscroll属性，如果是mc，引用的是_y,_height属性，我用一个参数将二者区分，由一个if语句控制，让滚动条可以自由区别状态。&lt;br&gt;另外一个解决方案是定义ScrollBar的不同子类，这两者本质区别不大，在状态比较多时，可能要维持一个庞大的if算法，这样就用生成子类的方法比较好。&lt;br&gt;&lt;br&gt;ScrollBar.as&lt;br&gt;//滚动条组件&lt;br&gt;function BindTo(mc,type:String,intMcHeight:Number,yinitial:Number){&lt;br&gt;ScrollType=type;&lt;br&gt;if(type==&amp;quot;TXT&amp;quot;){&lt;br&gt;scrollTxt=mc;&lt;br&gt;}&lt;br&gt;if(type==&amp;quot;MC&amp;quot;){&lt;br&gt;initialY=yinitial;&lt;br&gt;McHeight=intMcHeight;&lt;br&gt;scrollMc=mc;&lt;br&gt;} &lt;br&gt;}&lt;br&gt;function Scroll() {&lt;br&gt;if(ScrollType==&amp;quot;TXT&amp;quot;)&lt;br&gt;this.onEnterFrame = function() {&lt;br&gt;scrollTxt.scroll = scrollTxt.maxscroll*mcBlock._y/(BgLength-BlockLength*3/2)&lt;br&gt;};&lt;br&gt;if(ScrollType==&amp;quot;MC&amp;quot;){&lt;br&gt;this.onEnterFrame=function(){&lt;br&gt;if(scrollMc._height&amp;gt;McHeight){&lt;br&gt;scrollMc._y=initialY-(scrollMc._height-McHeight)*mcBlock._y/(BgLength-BlockLength*3/2)}&lt;br&gt;}&lt;br&gt;}&lt;br&gt;}&lt;br&gt;&lt;br&gt;备注：这也是常见模式，在flash的逻辑控制里尤其随处可见
&lt;p&gt;&lt;b&gt;17.装饰模式（Decorator）&lt;/b&gt;&lt;br&gt;在食堂吃饭，没筷子怎么行？我是从来不带饭盆的。师傅很人性化，每个窗口都放着一大把筷子，随用随拿。&lt;br&gt;&lt;br&gt;这个模式如果用好，有的地方可以很省力。比如，我网站里的滚动条：&lt;br&gt;&lt;br&gt;ScrollBar.as&lt;br&gt;//滚动条组件&lt;br&gt;class ScrollBar extends BaseMovie {&lt;br&gt;var BgLength:Number;&lt;br&gt;var BlockLength:Number;&lt;br&gt;var mcBlock:MovieClip&lt;br&gt;var Width:Number;&lt;br&gt;var ScrollType;&lt;br&gt;var scrollTxt:TextField;&lt;br&gt;var scrollMc:MovieClip;&lt;br&gt;var McHeight:Number&lt;br&gt;var initialY:Number&lt;br&gt;function ScrollBar() {&lt;br&gt;}&lt;br&gt;function InitialScrollBar(BgLength, BlockLength) {&lt;br&gt;this.BlockLength = BlockLength;&lt;br&gt;this.BgLength = BgLength;&lt;br&gt;}&lt;br&gt;function BindTo(mc,type:String,intMcHeight:Number,yinitial:Number){&lt;br&gt;ScrollType=type;&lt;br&gt;if(type==&amp;quot;TXT&amp;quot;){&lt;br&gt;scrollTxt=mc;&lt;br&gt;}&lt;br&gt;if(type==&amp;quot;MC&amp;quot;){&lt;br&gt;initialY=yinitial;&lt;br&gt;McHeight=intMcHeight;&lt;br&gt;scrollMc=mc;&lt;br&gt;} &lt;br&gt;}&lt;br&gt;function Scroll() {&lt;br&gt;if(ScrollType==&amp;quot;TXT&amp;quot;)&lt;br&gt;this.onEnterFrame = function() {&lt;br&gt;scrollTxt.scroll = scrollTxt.maxscroll*mcBlock._y/(BgLength-BlockLength*3/2)&lt;br&gt;};&lt;br&gt;if(ScrollType==&amp;quot;MC&amp;quot;){&lt;br&gt;this.onEnterFrame=function(){&lt;br&gt;if(scrollMc._height&amp;gt;McHeight){&lt;br&gt;scrollMc._y=initialY-(scrollMc._height-McHeight)*mcBlock._y/(BgLength-BlockLength*3/2)}&lt;br&gt;}&lt;br&gt;}&lt;br&gt;}&lt;br&gt;function ScrollMc() {&lt;br&gt;&lt;br&gt;}&lt;br&gt;function StopScroll() {&lt;br&gt;this.onEnterFrame=null;&lt;br&gt;}&lt;br&gt;function Reset(){&lt;br&gt;mcBlock._y=0;&lt;br&gt;}&lt;br&gt;}&lt;br&gt;&lt;br&gt;核心函数是BindTo（），把这个滚动条的实例绑定到某个动态文本框或者某个mc上，就可以实现滚动。&lt;br&gt;&lt;br&gt;备注：装饰模式的思想是，在不影响其他对象的情况下，以动态，透明的方式给单个对象添加职责。&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4841837938742446725&amp;page=RSS%3a+(%e8%bd%ac%e8%bd%bd)%e4%b8%80%e7%af%87%e5%be%88%e5%a5%bd%e7%9a%84flash+oop%e6%95%99%e7%a8%8b&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=babaozhou.spaces.live.com&amp;amp;GT1=babaozhou"&gt;</description><comments>http://babaozhou.spaces.live.com/Blog/cns!4331A9F3BEC0CA85!401.entry#comment</comments><guid isPermaLink="true">http://babaozhou.spaces.live.com/Blog/cns!4331A9F3BEC0CA85!401.entry</guid><pubDate>Thu, 10 Mar 2005 15:57:20 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://babaozhou.spaces.live.com/blog/cns!4331A9F3BEC0CA85!401/comments/feed.rss</wfw:commentRss><wfw:comment>http://babaozhou.spaces.live.com/Blog/cns!4331A9F3BEC0CA85!401.entry#comment</wfw:comment><dcterms:modified>2006-04-29T15:40:56Z</dcterms:modified></item><item><title>值得珍藏的80句话</title><link>http://babaozhou.spaces.live.com/Blog/cns!4331A9F3BEC0CA85!365.entry</link><description>&lt;p&gt;&lt;a href="http://&amp;lt;!--begin video code --&amp;gt;&amp;lt;br&amp;gt;&amp;lt;a href=/"&gt;&lt;/a&gt;
&lt;p&gt;01.每天告诉自己一次，“我真的很不错”。 &lt;br&gt;02.生气是拿别人做错的事来惩罚自己。 &lt;br&gt;03.生活中若没有朋友，就像生活中没有阳光一样。 &lt;br&gt;04.明天的希望，让我们忘了今天的痛苦。 &lt;br&gt;05.生活若剥去理想、梦想、幻想，那生命便只是一堆空架子。 &lt;br&gt;06.发光并非太阳的专利，你也可以发光。 &lt;br&gt;07.愚者用肉体监视心灵，智者用心灵监视肉体。 &lt;br&gt;08.获致幸福的不二法门是珍视你所拥有的、遗忘你所没有的。 &lt;br&gt;09.贪婪是最真实的贫穷，满足是最真实的财富。 &lt;br&gt;10.你可以用爱得到全世界，你也可以用恨失去全世界。 &lt;br&gt;11.人的价值，在遭受诱惑的一瞬间被决定。 &lt;br&gt;12.年轻是我们唯一拥有权利去编织梦想的时光。 &lt;br&gt;13.青春一经典当即永不再赎。 &lt;br&gt;14.没有了爱的语言，所有的文字都是乏味的。 &lt;br&gt;15.真正的爱，应该超越生命的长度、心灵的宽度、灵魂的深度。 &lt;br&gt;16.爱的力量大到可以使人忘记一切，却又小到连一粒嫉妒的沙石也不能容纳。 &lt;br&gt;17.当一个人真正觉悟的一刻，他放弃追寻外在世界的财富，而开始追寻他内心世界的真正财富。 &lt;br&gt;18.只要有信心，人永远不会挫败。 &lt;br&gt;19.不论你在什么时候开始，重要的是开始之后就不要停止。 &lt;br&gt;20.不论你在什么时候结束，重要的是结束之后就不要悔恨。 &lt;br&gt;21.人若软弱就是自己最大的敌人。 &lt;br&gt;22.人若勇敢就是自己最好的朋友。 &lt;br&gt;23.『不可能』只存在於蠢人的字典里。 &lt;br&gt;24.抱最大的希望，为最大的努力，做最坏的打算。 &lt;br&gt;25.家！甜蜜的家！天下最美好的莫过于家。 &lt;br&gt;26.游手好闲会使人心智生锈。 &lt;br&gt;27.每一件事都要用多方面的角度来看它。 &lt;br&gt;28.有理想在的地方，地狱就是天堂。 &lt;br&gt;29.有希望在的地方，痛苦也成欢乐。 &lt;br&gt;30.所有的胜利，与征服自己的胜利比起来，都是微不足道。 &lt;br&gt;31.所有的失败，与失去自己的失败比起来，更是微不足道。 &lt;br&gt;32.上帝从不埋怨人们的愚昧，人们却埋怨上帝的不公平。 &lt;br&gt;33.美好的生命应该充满期待、惊喜和感激。 &lt;br&gt;34.世上最累人的事，莫过于虚伪的过日子。 &lt;br&gt;35.觉得自己做的到和不做的到，其实只在一念之间。 &lt;br&gt;36.第一个青春是上帝给的；第二个的青春是KAO自己努力的。 &lt;br&gt;37.少一点预设的期待，那份对人的关怀会更自在。 &lt;br&gt;38.思想如钻子，必须集中在一点钻下去才有力量。 &lt;br&gt;39.人只要不失去方向，就不会失去自己。! &lt;br&gt;40.如果你曾歌颂黎明，那么也请你拥抱黑夜。 &lt;br&gt;41.问候不一定要慎重其事，但一定要真诚感人。 &lt;br&gt;42.人生重要的不是所站的位置，而是所朝的方向。 &lt;br&gt;43.当你能飞的时候就不要放弃飞。 &lt;br&gt;44.当你能梦的时候就不要放弃梦。 &lt;br&gt;45.当你能爱的时候就不要放弃爱。 &lt;br&gt;46.生命太过短暂，今天放弃了明天不一定能得到。 &lt;br&gt;47.天才是百分之一的灵感加上百分之九十九的努力。 &lt;br&gt;48.人总是珍惜未得到的，而遗忘了所拥有的。 &lt;br&gt;49.快乐要懂得分享，才能加倍的快乐。 &lt;br&gt;50.自己要先看得起自己，别人才会看得起你。 &lt;br&gt;51.一个今天胜过两个明天。 &lt;br&gt;52.要铭记在心；每天都是一年中最美好的日子。 &lt;br&gt;53.乐观者在灾祸中看到机会；悲观者在机会中看到灾祸。 &lt;br&gt;54.有勇气并不表示恐惧不存在，而是敢面对恐惧、克服恐惧。 &lt;br&gt;55.肯承认错误则错已改了一半。 &lt;br&gt;56.明天是世上增值最快的一块土地，因它充满了希望。 &lt;br&gt;57.理想的路总是为有信心的人预备着。 &lt;br&gt;58.所有欺骗中，自欺是最为严重的。 &lt;br&gt;59.人生最大的错误是不断担心会犯错。 &lt;br&gt;60.把你的脸迎向阳光，那就不会有阴影。 &lt;br&gt;61.经验是由痛苦中粹取出来的。 &lt;br&gt;62.用最少的悔恨面对过去。&lt;br&gt;63.用最少的浪费面对现在。 &lt;br&gt;64.用最多的梦面对未来。 &lt;br&gt;65.快乐不是因为拥有的多而是计较的少。 &lt;br&gt;66.你的选择是做或不做，但不做就永远不会有机会。 &lt;br&gt;67.如你想要拥有完美无暇的友谊，可能一辈子找不到朋友。 &lt;br&gt;68.不如意的时候不要尽往悲伤里钻，想想有笑声的日子吧。 &lt;br&gt;69.把自己当傻瓜，不懂就问，你会学的更多。 &lt;br&gt;70.要纠正别人之前，先反省自己有没有犯错。 &lt;br&gt;71.因害怕失败而不敢放手一搏，永远不会成功。 &lt;br&gt;72.要克服生活的焦虑和沮丧，得先学会做自己的主人。 &lt;br&gt;73.你不能左右天气，但你能转变你的心情。 &lt;br&gt;74.孤单寂寞与被遗弃感是最可怕的贫穷。 &lt;br&gt;75.想象力比知识更重要。 &lt;br&gt;76.漫无目的的生活就像出海航行而没有指南针。 &lt;br&gt;77.好好扮演自己的角色，做自己该做的事。 &lt;br&gt;78.一切伟大的行动和思想，都有一个微不足道的开始。 &lt;br&gt;79.得意时应善待他人，因为你失意时会需要他们。 &lt;br&gt;80.学做任何事得按部就班，急不得。&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4841837938742446725&amp;page=RSS%3a+%e5%80%bc%e5%be%97%e7%8f%8d%e8%97%8f%e7%9a%8480%e5%8f%a5%e8%af%9d&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=babaozhou.spaces.live.com&amp;amp;GT1=babaozhou"&gt;</description><comments>http://babaozhou.spaces.live.com/Blog/cns!4331A9F3BEC0CA85!365.entry#comment</comments><guid isPermaLink="true">http://babaozhou.spaces.live.com/Blog/cns!4331A9F3BEC0CA85!365.entry</guid><pubDate>Sun, 20 Feb 2005 15:16:19 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://babaozhou.spaces.live.com/blog/cns!4331A9F3BEC0CA85!365/comments/feed.rss</wfw:commentRss><wfw:comment>http://babaozhou.spaces.live.com/Blog/cns!4331A9F3BEC0CA85!365.entry#comment</wfw:comment><dcterms:modified>2006-04-29T15:49:01Z</dcterms:modified></item><item><title>转一篇真正感动的文章</title><link>http://babaozhou.spaces.live.com/Blog/cns!4331A9F3BEC0CA85!347.entry</link><description>&lt;p&gt;中国男孩秋(隐去真名)与他的妹妹相依为命。父母早逝，她是他唯一的亲人。所以男孩爱妹妹胜过爱自己。然而灾难再一次降临在这两个不幸的孩子身上。妹妹染上重病，需要输血。但医院的血液太昂贵，男孩没有钱支付任何费用，尽管医院已免去了手术费，但不输血妹妹仍会死去。 &lt;br&gt;作为妹妹惟一的亲人，男孩的血型和妹妹相符。医生问男孩是否勇敢，是否有勇气承受抽血时的疼痛。男孩开始犹豫，10岁的大脑经过一番思考，终于点了点头。 &lt;br&gt;抽血时，男孩安静地不发出一丝声响，只是向着邻床上的妹妹微笑。抽血完毕后，男孩声音颤抖地问：“医生，我还能活多长时间？” &lt;br&gt;医生正想笑男孩的无知，但转念间又被男孩的勇敢震撼了：在男孩10岁的大脑中，他认为输血会失去生命，但他仍然肯输血给妹妹。在那一瞬间，男孩所作出的决定是付出了一生的勇敢，并下定了死亡的决心。 &lt;br&gt;医生的手心渗出汗，他紧握着男孩的手说：“放心吧，你不会死的。输血不会丢掉生命。” &lt;br&gt;男孩眼中放出了光彩：“真的？那我还能活多少年？” &lt;br&gt;医生微笑着，充满爱心地说：“你能活到100岁，小伙子，你很健康！”男孩高兴得又蹦又跳。他确认自己真的没事时，就又挽起胳膊――刚才被抽血的胳膊，昂起头，郑重其事地对医生说：“那就把我的血抽一半给妹妹吧，我们两个每人活50年！” &lt;br&gt;所有的人都震惊了，这不是孩子无心的承诺，这是人类最无私最纯真的诺言。 
&lt;p&gt; 
&lt;p&gt;在情人节这天里....我希望大家都能看见温暖的文字...
&lt;p&gt;祝各位有情人终成眷属 &lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4841837938742446725&amp;page=RSS%3a+%e8%bd%ac%e4%b8%80%e7%af%87%e7%9c%9f%e6%ad%a3%e6%84%9f%e5%8a%a8%e7%9a%84%e6%96%87%e7%ab%a0&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=babaozhou.spaces.live.com&amp;amp;GT1=babaozhou"&gt;</description><comments>http://babaozhou.spaces.live.com/Blog/cns!4331A9F3BEC0CA85!347.entry#comment</comments><guid isPermaLink="true">http://babaozhou.spaces.live.com/Blog/cns!4331A9F3BEC0CA85!347.entry</guid><pubDate>Mon, 14 Feb 2005 09:30:59 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://babaozhou.spaces.live.com/blog/cns!4331A9F3BEC0CA85!347/comments/feed.rss</wfw:commentRss><wfw:comment>http://babaozhou.spaces.live.com/Blog/cns!4331A9F3BEC0CA85!347.entry#comment</wfw:comment><dcterms:modified>2006-04-29T15:53:26Z</dcterms:modified></item></channel></rss>