AAS3WDP-Chapter 8 Composite 组合模式(下)
接上集《AAS3WDP-Chapter 8 Composite 组合模式(上)》,上集讲到了建立叶子元素和组合元素,这集先讲xml文件:
< ?xml version="1.0" encoding="utf-8"?> <filesystem> <filesystemitem type="Directory" name="Program Files" bytes="1024"> </filesystemitem><filesystemitem type="Directory" name="Adobe Flash"> <filesystemitem type="File" name="Flash.exe"/> <filesystemitem type="File" name="Hello.txt"/> <filesystemitem type="File" name="Today.txt"/> </filesystemitem> <filesystemitem type="Directory" name="Other" bytes="1024"> <filesystemitem type="File" name="Hello.txt"/> <filesystemitem type="File" name="Image.jpg"/> </filesystemitem> </filesystem>
xml里,文件分2个目录,Program Files和Other,Program Files目录下有子目录Adobe Flash,子目录Adobe Flash中有3个文件,而Other下有2个子文件,下边我们就用这个xml来模拟一个文件结构目录。
AAS3WDP-Chapter 8 Composite 组合模式(上)
啊,这一贴比较麻烦,内容也比较多,所以准备分上下部分来完成。
那么,什么是组合模式呢?
组合模式是将对象之间的关系以数据结构中的2叉树表现出来,使得客户端将单纯的元素与复杂元素同等看待,这样的话使得用户在操作不同的子类元素时可以和根节点元素一样操作,在透明模式下即根元素和叶元素公用同一个接口达到共同的结果。组合模式就是解决部分与整体的关系的一种模式。
这一章是以文件系统为例,文件分为"文件夹"和"文件"两种,恩,就是这样。那么我们先来建立一个共用接口IFileSystemItem:
package{
import IIterator;//PS:第7章的类
public interface IFileSystemItem{
function iterator():IIterator;
function addItem(item:IFileSystemItem):void;
function removeItem(item:IFileSystemItem):void;
function getName():String;
function setName(name:String):void;
function getParent():IFileSystemItem;
function setParent(parent:IFileSystemItem):void;
}
}
About Flash
今天在CSDN看到个题为《Adobe宣布Flex Builder将更名为Flash Builder》的东西,这个怎么说呢,什么是Flex,然后,什么是Flash?
其实一开始推出个Flex估计Adobe是想让她和Flash区分开来,而后来呢,Flash的定义被更改了,,于是现在又绕了回来,改成了Flash Builder~不过SDK依然是叫Flex SDK哈哈…纠结吧?ORZ。
那到底Flash是什么东西呢?如果你的想法还停留在Flash动画的年代,那赶紧更新下,不然就OUT了,,。
想看详细信息的可以点此下载官方的PDF《ADOBE® FLASH® 平台》。
WordPress-100 Amazing Free WordPress Themes for 2009

Learned from 《100 Amazing Free WordPress Themes for 2009》
The last few days in review for NCRE,so,have not so much time to update blog,and,,oh,maybe i will update something interesting from other website,today's topic,,haha,Free WordPress Themes,do some one use wordpress too..
WordPress is an easy and free blog system,you can build blog quickly with it.
AAS3WDP-Chapter 7 Iterator 迭代模式
什么是迭代器模式?迭代器模式是干嘛的呢?
迭代器(Iterator)模式,又叫做游标(Cursor)模式。GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。
这一章的例子是创建一个存储uint类型的UIntCollection类,关系到4个文件,先是ICollection接口。
该接口只有一个方法,而该方法返回迭代器接口IIterator,参数type用于判断返回哪种类型的迭代器。
package{
public interface ICollection{
function iterator(type:String=null):IIterator;
//other
}
}
接着是IIterator接口,该接口定义了3个方法。
package{
public interface IIterator{
function reset():void;
function next():Object;
function hasNext():Boolean;
//other
}
}
AS3-无聊的密码生成器
怎么说呢这个……的确是因为无聊,经常注册一些不想注册的网站,需要用到用户密码,但是又不想用自己常用的密码,觉得随便输又不太好,,SO,。弄了这么个Flash。
用法很简单,1)在"密码字符串允许值"中输入允许的密码值,设置了只能输入0-9,a-z;2)然后设置密码的长度,设置了6-16;3)点击"生成密码"生成密码,嘿嘿。
AAS3WDP-Chapter 6 Remote Proxy 远程代理
这里是一个Flickr的远程图片搜索代理实例,对了,Flickr的远程图片搜索需要申请API,别忘了去申请一个。
代码部分,类PhotoSearchProxy.as:
package{
import flash.events.DataEvent;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.net.URLLoader;
import flash.net.URLRequest;
public class PhotoSearchProxy extends EventDispatcher{
private static const API_KEY:String="c4643072bfc38caa0257f4c039624cb5";//这是我的Flickr Api_key
private static const FLICKR_URL:String="http://api.flickr.com/services/rest/";//Flickr的api地址
public function PhotoSearchProxy(){}
private function onComplete(_evt:Event):void{
dispatchEvent(new DataEvent(Event.COMPLETE,false,false,XML(_evt.target.data)));
}
public function search(userId:String,tags:String):void{
var loader:URLLoader=new URLLoader();
var request:URLRequest=new URLRequest(PhotoSearchProxy.FLICKR_URL+"?method=flickr.photos.search&user_id="+userId+"&tags="+tags+"&api_key="+PhotoSearchProxy.API_KEY);
loader.addEventListener(Event.COMPLETE,onComplete);
loader.load(request);
}
}
}
在loader载入request之后dispatchEvent一个DataEvent。
具体调用部分:
import PhotoSearchProxy;
var flickr:PhotoSearchProxy=new PhotoSearchProxy();
flickr.addEventListener(Event.COMPLETE,onComplete);
flickr.search("","yellow");
function onComplete(_evt:DataEvent){
trace(_evt.data);
}
实际化PhotoSearchProxy之后,调用search方法,load完之后接收dispatchEvent的DataEvent的data并trace。
记得以前看过的一个AIR的RSS阅读器也是这样做的,写了个EventDispatcher的子类,载入RSS源地址后dispatchEvent。。。
AAS3WDP-Chapter 6 Virtual Proxy 虚拟代理模式
按照习惯应该先鬼扯下什么是Virtual Proxy,……话说…还是直接参阅Java设计模式的Virtual Proxy吧,或者看看这个吧:"Java设计模式之虚拟代理模式"。
Flash里边的Loader就是一个代理,书上的说法是这样的,本来一个元件是必须等到加载完成才能加载到显示列表中的,但是用了虚拟代理之后,可以将代理当成一个加载完成后的元件,加入到显示列表中。
下边么,来点代码,先是接口类IProduct.as:
package{
public interface IProduct{
//get method
function getPrice():Number;
function getTitle():String;
//set method
function setPrice(price:Number):void;
function setTitle(title:String):void;
}
}
AAS3WDP-Chapter 5 Factory 工厂模式
接这上次的"AAS3WDP-Chapter 5 Template Method模板方法",现在是工厂模式。
先来AbstractGameEXP类,相比之下,在模板方法里使用了var field:IField = createField();然后在子类中实现接口很方法。
package {
import IField;
public class AbstractGameEXP {
public function initialize():void {
var field:IField = createField();
field.drawField();
createTeam("red");
createTeam("blue");
startGame();
}
public function createField():IField {
throw new Error("Abstract Method!");
}
public function createTeam(name:String):void {
throw new Error("Abstract Method!");
}
public function startGame():void {
throw new Error("Abstract Method!");
}
}
}
Google Maps API for Flash Demo
Google Maps API的ActionScript3版本出来已经有一段时间了,今天在官方文档(里边有很详细的介绍)那看了一下,做了2个Demo,关于中文版的地图…恩,,是没出?还是SDK里可以设置语言?知道的告诉我一下,我是农民,不知道怎么设置。
先是一般的地图,带标记,拖动,和位置查询。
AAS3WDP-Chapter 5 Template Method模板方法
拿到了AS3设计模式(AAS3WDP)的中文版,亚马逊的送书速度比当当好很多~
看得挺慢,不过也看到了第5章,模板方法和工厂模式,同时讲到了抽象类,乖乖的敲了下代码,顺便做下笔记吧。
AS3中没有抽象类,但是可以通过别的办法实现同抽象类一样的效果,下次看到这个东西再讲,呵呵。
现在开始今天的内容"模板方法",我们先建立一个AbstractGame类,代码如下:
package {
public class AbstractGame {
public function initialize():void {
createField();
createTeam("red");
createTeam("blue");
startGame();
}
public function createField():void {
throw new Error("Abstract Method!");
}
public function createTeam(name:String):void {
throw new Error("Abstract Method!");
}
public function startGame():void {
throw new Error("Abstract Method!");
}
}
}
其中的initialize()就是模板方法,它调用createField();createTeam();startGame();3个方法,但是这个类本身不提供这3个方法的实现,而通过子类来实现。
介绍下Twitter
Twitter是什么?
Twitter是什么?最简单的话来讲Twitter是一个信息分享平台,也可以说是一个一次只能发布140字内容的微博客。
Twitter怎么用?
在Twitter官方网站注册帐号后就可以开始Twitter了,当然,记得Follow别人,还有呼唤你的朋友来Follow你。不然你就适合你一个人发牢骚。
Twitter的原理是让你播报短消息给你的朋友或"Followers(跟随者)",所以你能在自己的Twitter页面看到所以你Follow的人发布的Twitter消息,有点像聊天室。
PS:记得不要跟@dfdou一样总是在Twitter中发牢骚,这样可能会让跟随你的人感觉很糟糕=。=
Twitter为何成功?
- 开放API,个人觉得这个是很大的成功原因之一,因为开放API,所以有无数的第3方应用。WordPress的成功也跟这一点离不开关系。相比之下,国内的很多软件开放性都很差,尤其是QQ,Qzone居然不开放API,纳闷。开放API带来的好处很多,比如国内仿Twitter的嘀咕有同步发送到Twitter的功能;再比如WordPress同步到Twitter的插件。
- 简单,简单的注册流程,简单的发布,只要输入内容,然后发布,一切都ok了,甚至不能插入图片(如果你需要在信息中放入图片,可以使用第3方应用,比如Twitpic)。
- 信息传播的及时性。奥巴马当时当选总统时最先报道的地方就是Twitter。当然这也归结于Twitter的简单,你可以在手机上,网页上,或者其他插件上方便的发送消息。而传统的媒体,都需要比较麻烦的过程才能发布信息。相比之下的搜索引擎的搜索结果存在时间差。
- 信息的病毒性传播。假设有个人,比方@dfdou,发布了一个信息,而跟随@dfdou的人有35个,这35个人里边有2个人看到这条信息觉得不错,于是Retweet了一下,而其中有一个人拥有200个跟随者,在这200个跟随者里边可能又有人Retweet了这条信息,如此,这条信息就会跟病毒一样蔓延传播。
- 让信息传递没有国界,当然,你可能需要使用英文来发信息。
WordPress Plugins-WP Super Cache使用介绍
今天正好在弄针对YSlow的优化,唉,分数一直是E,无语的很,怎么也减不了,放弃了。趁这会用了下WP Super Cache插件,效果还不错。
下边内容来自http://fairyfish.net/2008/10/27/wp-super-cache/
WP Super Cache 基本介绍
WP Super Cache 是 WordPress 官方开发人员 Donncha 开发,是当前最高效也是最灵活的 WordPress 静态缓存插件。它直接生成 HTML 文件,能使得你的 WordPress 博客将显著的提速。
下载 WP Super Cache 后,上传到插件目录,并在 Plugin 目录下激活之后,接着需要在 Setting > WP Super Cache 进行详细配置。
WP Super Cache Status
首先是三个选项:
* ON (WP Cache and Super Cache enabled)
* HALF ON (Super Cache Disabled, only legacy WP-Cache caching.)
* OFF (WP Cache and Super Cache disabled)
默认情况下,WP Super Cache 是没有开启的,所以在这里选择下,需按则第一个,就是 Super Cache,缓存为静态文件,如果第二种情况呢,则和 WP-Cache 一致。
Proudly tell the world your server is Digg proof! (places a message in your blog’s footer)
这个是说在你的 footer 显示一条信息告诉读者该博客已经缓存了,一般不要这样做。
Clear all cache files when a post or page is published. (This may significantly slow down saving of posts.)
这个是说发布新日志的时候清理所有缓存,这个肯定不能这么干了。
