智慧 + 毅力 = 无所不能

正确性、健壮性、可靠性、效率、易用性、可读性、可复用性、兼容性、可移植性...

导航

2009年11月23日

摘要: 我中午吃六两饭,猪肉炖粉条,辣子鸡,鱼丸,咸鸭蛋,外加两杯酸奶(猪!)这些东西都是对象,他们共同组成了我的午饭。 举例:应该说在Flash里组合模式是无处不在的,因为只要还有mc的嵌套,就有组合模式存在。几个mc装在一个mc里,这个装载用的mc称作容器。但是就这么说,恐怕没人会重视这个模式,因为不管理不理解他我们都在用。他的确有很多种实现方式,我的方式之一是这样的。[代码]然后里面每个组件都还包含... 阅读全文

posted @ 2009-11-23 15:01 Bill Yuan 阅读(343) 评论(0) 推荐(0) 编辑

摘要: ~师傅,晚上的鸡腿没中午的新鲜啊。~胡说!这就是中午的。 举例:开个玩笑,上面两句话不是备忘录模式的本意,实际上我一时想不出在食堂里备忘录是什么样子。备忘录的意思是,在不破坏对象封装型的前提下,保存对象的当前状态,当需要时,恢复这个状态或提取这个状态。备忘录被广泛地运用到逻辑关系里,它似乎是目前我提到的唯一跟时间有关的模式,在控制论里可以涉及到因果系统。备忘录的应用非常广泛,最常见的是浏览器或网站... 阅读全文

posted @ 2009-11-23 15:01 Bill Yuan 阅读(361) 评论(0) 推荐(0) 编辑

摘要: 在食堂吃饭,没筷子怎么行?我是从来不带饭盆的。师傅很人性化,每个窗口都放着一大把筷子,随用随拿。 这个模式如果用好,有的地方可以很省力。比如,我网站里的滚动条:[代码]核心函数是BindTo(),把这个滚动条的实例绑定到某个动态文本框或者某个mc上,就可以实现滚动。备注:装饰模式的思想是,在不影响其他对象的情况下,以动态,透明的方式给单个对象添加职责。装饰者模式应该注意的方面:1、装饰者和被装饰者... 阅读全文

posted @ 2009-11-23 14:57 Bill Yuan 阅读(366) 评论(0) 推荐(0) 编辑

摘要: 我今天想吃面,师傅问我:要什么料?西红柿鸡蛋,排骨还是牛肉? 举例:状态模式是指将对象当前的某些状态局部化,当对象改变状态时,看起来好像改变了类。例子还是我的滚动条。如果要滚动的是文本框,就要引用一个 TextField的Scroll,maxscroll属性,如果是mc,引用的是_y,_height属性,我用一个参数将二者区分,由一个if语句控制,让滚动条可以自由区别状态。另外一个解决方案是定义S... 阅读全文

posted @ 2009-11-23 14:54 Bill Yuan 阅读(400) 评论(0) 推荐(0) 编辑

摘要: 只要愿意,我随时都可以跑到哪个窗口打要吃的东西,前提是,我必须跑这一趟。 举例:我说过,我的所有mc都继承自BasicMovie这个类,但不是我的所有mc都要从后来获取数据库数据。获取数据库数据所要访问的信息,比如 ip,路径,文件保存在配置文件里,初始化的时候读入内核,并且只有内核那里有一份。在BasicMovie里加入对这些全局变量的引用是不合适的,因为只有少数mc要用到,而且由于某些原因我无... 阅读全文

posted @ 2009-11-23 14:52 Bill Yuan 阅读(278) 评论(0) 推荐(0) 编辑

摘要: 东西不够吃?给你摆20面镜子~师傅,东西还是只有一份。。。 关于这个模式十分抱歉,我暂时还没想到在flash显示层里面的实现。需要举例说明的是,浏览器的机制是,在有大量文字的英文文档里,相同的字母共享一个 Flyweight,在内存里其实只占一份空间,然后在文档不同的地方显示,这样对于大量细粒度的效果来说,可以节省很多资源。在下层,我们可以做到的就是,对某个全局对象只在某处真正保存,任何对象想要这... 阅读全文

posted @ 2009-11-23 14:50 Bill Yuan 阅读(273) 评论(0) 推荐(0) 编辑

摘要: 我每天先在食堂找座位,再打饭,再打菜,再买杯酸奶。这已经模式化。要是食堂有服务员,我也会要他这么做。 举例,策略模式是把一系列的算法封装起来,形成一个类。这个模式几乎是随时随地都可以整合到别的模式里去的,我的那一堆xml解析器实际上就是策略模式的应用,这个模式还应用到我网站的下层,因为flash提交给aspx页面的数据也是xml字符串,下层模块也需要相应的解析算法。同样的,我把对xml的解析封装进... 阅读全文

posted @ 2009-11-23 14:43 Bill Yuan 阅读(267) 评论(0) 推荐(0) 编辑

摘要: 可能我们不是每个人每天都想吃饭,所以我们要求猴子每天中午必须在寝室,如果我们要吃,他就去,如果我们都不吃,他爱干嘛干嘛。 举例:这恐怕是每个人在flash里都会无意中用到的模式。比如,一个网站,它的下级栏目不用在整个网站初始化的时候一开始就读进来,但是我们要确保,在浏览者想看并且点击导航条上的某个按钮时,能够正确地读进相应的影片文件,前提是,我们必须在内部保留一个索引,可以称作代理。通常是一个空m... 阅读全文

posted @ 2009-11-23 13:13 Bill Yuan 阅读(233) 评论(0) 推荐(0) 编辑

摘要: 我要一碗汤,但是只有纸饭盒,还没勺,所以食堂的师傅给了我一次性的汤碗和勺,这叫适配器。 适配器解决的是某一个类的对外接口不合用的问题,可能是参数或者返回值类型不符等问题造成的,这时候我们需要在工作对象和这个类之间加一层间接的层次。这个模式我在底层的数据交换层用过。我说过,flash和asp.net之间交换数据全以xml为载体。返回xml在底层只有三层,数据库操作,数据操作,数据显示,由数据操作层返... 阅读全文

posted @ 2009-11-23 13:10 Bill Yuan 阅读(264) 评论(0) 推荐(0) 编辑

摘要: 每天都要去食堂,每个人去不同的窗口吃不同的菜,很累,今天全寝室推举猴子去打饭:你吃这个,三两饭,我吃那个,五两饭,所有人都只跟猴子一个人交涉,食堂所有的师傅也只见猴子一个人。 举例:这个模式在程序的上下层的通信之间可以应用得十分广泛。Asp的每个模块要去不同的数据,访问数据库的不同表,就要跟不同的下层数据访问组件打交道。就是说,每个mc模块必须知道,我要去哪个具体的数据访问组件取数据。每个模块要维... 阅读全文

posted @ 2009-11-23 13:10 Bill Yuan 阅读(213) 评论(0) 推荐(0) 编辑

摘要: 菜太淡,不合有些人的胃口,所以要求食堂的师傅,专门开一个窗口,专门在做好的菜里多加些辣椒。 我在自己的站里运用了桥接模式:所有的影片都继承自我定义的BasicMovie 类(BasicMovie继承自MovieClip类),但是在四个下级栏目的影片里,需要定义相同的方法和事件来响应消息,BasicMovie没有这些函数,不符合要求,这时候,在四个影片里都写一遍是愚蠢的,我又写了一个SubTempl... 阅读全文

posted @ 2009-11-23 13:09 Bill Yuan 阅读(342) 评论(0) 推荐(0) 编辑

摘要: 食堂里厨房最远的窗口没熬白菜了,要告诉厨房,快送过来。责任链模式:一个窗口一个窗口地传话,一直传到食堂,食堂一看不妙,赶快做好送过去。中介者模式:专门派一个人负责传话,任何窗口没菜了,就要这个人赶快去厨房催。观察者模式:厨房那边派一个盯着,看哪个窗口没菜了就开始大声嚷嚷。 举例:之所以要把这三个设计模式放在一块儿,是因为我在我的站里面结合这三者建立了一个好玩的东西,可以说是我的网站的核心所在。它解... 阅读全文

posted @ 2009-11-23 12:46 Bill Yuan 阅读(1282) 评论(0) 推荐(0) 编辑

摘要: 我前面一个人买了一条巨大的鸡腿,我说我也要一条,师傅说,就这一条 举例:单件模式的应用是相当广泛的,它确保每个实例在全局范围内只被创建一次,我们flash里的mc大多数是单件。内核里的核心组件也只是单件,比如我的消息映射列表(见后)。按照单件模式的严格定义,应该让类负责保存它的唯一实例。但是我在Flash里还想不到怎么实现这一点,或者实现它的意义所在,但另外一点我们可以做到,就是在全局范围内只提供... 阅读全文

posted @ 2009-11-23 12:42 Bill Yuan 阅读(377) 评论(0) 推荐(1) 编辑

摘要: 到小炒窗口,看前面的哥们炒的青椒炒肉不错的样子。“师傅,我也要这样的。” 举例:这对flash的用户来说再熟悉不过了,我们经常用duplicateMovieClip()和attachMovie()这两个函数。按照一个原型复制相应的实例,各自执行自己的动作。在我的blog列表,导航条的生成。。几乎用得到多项数据的地方就要用原型模式。 阅读全文

posted @ 2009-11-23 12:42 Bill Yuan 阅读(221) 评论(0) 推荐(0) 编辑

摘要: 我到了食堂窗口,如果师傅跟那儿抽烟,我还是吃不着东西。我说:师傅,打饭!师傅才会完成打饭这一动作。这是工厂方法模式,抽象工厂的实现通常用工厂方法模式来完成。 举例:还是上一条,我本来想用一句话带一个参数就实现具体xml解析器的实现,无奈构造函数没有返回值,所以必须用xmlParser= XMLParserGetFactory. createXmlParser(xml,arrayID,arrayTi... 阅读全文

posted @ 2009-11-23 12:41 Bill Yuan 阅读(316) 评论(1) 推荐(1) 编辑

摘要: 还是那个说法,我要吃东西就去相应的食堂窗口,但我不能吃食堂窗口,窗口里的东西也许不少,我要跟师傅说,要这个,这个,还有这个。 举例:我已经建立了 xml解析器的工厂,现在要返回解析器本身,就让工厂创建,返回给我。[代码]使用的时候:var xmlParser=new XMLParserGetFactory(“xmlParseGuestbookList”)xmlParser=... 阅读全文

posted @ 2009-11-23 12:39 Bill Yuan 阅读(230) 评论(0) 推荐(0) 编辑

摘要: 食堂里吃的东西很多,而我只想吃一样,那么食堂这个概念对我来说就是个抽象工厂,每个窗口可以看成它的一个具体实现,我要做的就是,去食堂,找到那个窗口,从窗口里买我要吃的东西。 举例:flash前台与asp后台的交互,访问某个动态页面,从数据库里取出需要的数据,通常的做法是在后台就把数据集解析成xml字符串,再送给 swf。每个业务逻辑模块,所取出的数据结构,也就是xml的结构是不一样的,我们要针对各个... 阅读全文

posted @ 2009-11-23 12:37 Bill Yuan 阅读(377) 评论(0) 推荐(0) 编辑

摘要: 说明:有很多地方看不懂,或者不好直接翻译,就按照自己的理解写了,所以看的时候请看一下原文。 相关资源:introduction to ECMAScript for XML (E4X)[IBM]e4x - 对xml操作的一些示例[N神]AS3中e4x纲要e4x本质上是一种全新的语言,同正则表达式(Regular Expression)一样,它有自己完整的语法,但它们都是as3语法的一部分.注:作者貌... 阅读全文

posted @ 2009-11-23 11:52 Bill Yuan 阅读(1538) 评论(1) 推荐(0) 编辑

摘要: 1. 官方文档 1.1. Swfmill概述 1.1.1. Swfmill是什么 Swfmill是一个使用SWFML实现的从xml到swf或者swf到xml转换的命令行工具。SWFML是一个在SWF文件格式制定后制定的XML方言。Swfmill是一个具有xslt能力的生成swf的工具,当然,它比SWFML的语法好懂多了。另外,它也是FAMES生成SWF的密不可分的一部分。 1.1.2. 我可以使用... 阅读全文

posted @ 2009-11-23 11:51 Bill Yuan 阅读(1940) 评论(0) 推荐(0) 编辑

摘要: haXe(发音如hex)是一种开源的编程语言。haXe语言介绍:其它很多语言只能运行在它们自己的平台(Java 运行在VM,C#运行在.Net,ActionsScript运行在Flash Player),而haXe则是一个多平台语言。这也就是说你可以使用haXe开发以下平台的程序:Javascript:你可以把一个haXe程序编译成单个的.js文件。你可以使用autocompletion支持来访问... 阅读全文

posted @ 2009-11-23 11:49 Bill Yuan 阅读(410) 评论(0) 推荐(0) 编辑