Submitted by gouki on 2009, February 27, 10:55 AM
创建型模式
1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory
工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。
2、BUILDER—MM最爱听的就是“我爱你”这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语 言都有一个按键,见到MM我只要按对应的键,它就能够用相应的语言说出“我爱你”这句话了,国外的MM也可以轻松搞掂,这就是我的“我爱你” builder。(这一定比美军在伊拉克用的翻译机好卖)
建造模式:将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。
3、FACTORY METHOD—请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method模式,带着MM到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让MM直接跟服务员说就行了。
工厂方法模式:核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。
4、PROTOTYPE—跟MM用QQ聊天,一定要说些深情的话语了,我搜集了好多肉麻的情话,需要时只要copy出来放到QQ里面就行了,这就是我的情话prototype了。(100块钱一份,你要不要)
原始模型模式:通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。原始模型模式允许动态的增加或减 少产品类,产品类不需要非得有任何事先确定的等级结构,原始模型模式适用于任何的等级结构。缺点是每一个类都必须配备一个克隆方法。
5、SINGLETON—俺有6个漂亮的老婆,她们的老公都是我,我就是我们家里的老公Sigleton,她们只要说道“老公”,都是指的同一个人,那就是我(刚才做了个梦啦,哪有这么好的事)
单例模式:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例单例模式。单例模式只应在有真正的“单一实例”的需求时才可使用。
……………………
» 阅读全文
Tags: 设计模式
PHP | 评论:0
| 阅读:20857
Submitted by gouki on 2009, February 27, 10:15 AM
这个插件很实用,适合那种写着教程内容的页面,以前如果有多个标题的话,必须一个一个的加锚点,然后再加链接,这样不太方便。所以看到这个插件的时候,我忍不住记录下来。
代码我没有细看,我只看了demo,自己觉得还是很有用的。
代码来自CSSRain.cn,图片同样来自他那里。
网站说:
XML/HTML代码
- 首先根据文章 自动在 右上角生成 导航菜单,
- 然后导航菜单可以 跟随 滚动条滚动 ,实时导航。
- 导航采用平滑方式,更人性化。
-
- 演示:
- http://cssrain.cn/demo/createTitle/title.html
-
- 下载:
- http://cssrain.cn/demo/createTitle/createTitle.rar
-
- 有问题 请留言, 只测试了 google 和 firefox 。
不过,IE或者其他的一些多窗口版的浏览器,会不会把它当成AD层屏蔽掉呢?
截图:

源码分流:
createtitle.rar
Tags: jquery, plugins, 导航
Javascript | 评论:0
| 阅读:22943
Submitted by gouki on 2009, February 26, 11:58 PM
http://www.cnbeta.com/articles/78036.htm
这是一条来自cnbeta的新闻,看到这个我很惊讶,确实非常的惊讶。
如果说GOOGLE是采用activex来实现,我恐怕不会惊讶,要知道foxmail等就是采用了这种方法。
但事实上,没有......
在我的猜测里,它应该是采用FLASH实现的。因为在我的想像里,好象只有FLASH才能实现这种多文件上传。
我没有看到具体的源代码,这仅仅是我的猜测,但我确实希望这不是用flash实现的,因为他的进度条,并非用flash实现。
这是一个进步。或许是我们以前的思路出了问题?
Tags: 上传, 多文件, google, gmail
Software | 评论:0
| 阅读:22859
Submitted by gouki on 2009, February 25, 8:46 PM
本来不好意思写上来的,但想想,还是写上来吧。(穷,没办法,呵呵)
服务器征求合托,以下是服务器的资料,以及待托管的情况:
服务器型号:dell 2850
内存:512M * 4
硬盘:72*4+36*1,作raid 1,scsi硬盘,所以,可用的是144+18,除去系统占用空间,估计最少有100G可用。
托管:考虑是电信,暂不作双线考虑(目前在网通,大致准备6月份左右搬)
准备:提供SVN服务,WEB服务(LAMP + memcached + eacceraltra),(FTP可以考虑。)MAIL服务 坚决不考虑
(目前是windows系统,准备迁出后,大约有2天时间进行 LINUX或FREEBSD的安装配置)
(1k 10G 拍卖,筹够资金后就考虑搬迁,并不一定是非要在6月份,呵呵)
[为避免过于影响浏览者的视线,置顶时间为一个月,谢谢理解]
QQ:19129540
MSN:GOUKIXIAO%HOTMAIL。COM
不好意思,实在是为了防止被抓取到。
Tags: 服务器, 托管, 电信
Misc | 评论:7
| 阅读:24372
Submitted by gouki on 2009, February 24, 11:01 PM
看到这个内容的时候,很吃惊,其实我在以前看到过一个R开头的网站时(记不清了,实在记不清了),他用JS做了一个cache函数,对函数做了缓存。还用了斐伯拉切函数做了测试。后来我根据他写的代码用jQuery写了一个类似的插件(它是把方法注册到了window对象里,所以加快了一些速度)。后来感觉这样的方法也同样可以用在数据上,又根据这样的想法写了一个存储数据的cache函数。也分别用在了两个不同的项目里。
如今又看到有人写这样类似的东西,就把他贴上来进行分享。
文章的内容来自:
原文如下:http://www.cssrain.cn/article.asp?id=1295
在jQuery中可以使用data()来给元素存储临时的变量:
// jQuery:
// Set data:
$(elem).data('customProperty', 12345);
// Get data:
$(elem).data('customProperty');
在mootools中可以使用store()来给元素存储临时的变量:
// MooTools:
// Set data:
elem.store('customProperty', 12345);
// Get data:
elem.retrieve('customProperty');
下面我们用JavaScript 自己动手写一个:
(function(){
var cache = [0],
expando = 'data' + +new Date();
function data(elem) {
var cacheIndex = elem[expando],
nextCacheIndex = cache.length;
if(!cacheIndex) {
cacheIndex = elem[expando] = nextCacheIndex;
cache[cacheIndex] = {};
}
return cache[cacheIndex];
}
window.data = data;
})();
使用:
var myElem = document.getElementById('id');
// 设置data:
data(myElem).customProperty = 12345;
// 获取 data:
data(myElem).customProperty; // returns 12345
// 用其他的变量
data(myElem).info = {
a : 123,
b : [4,5,6]
};
这个脚本其实很简单,就是往cache 数组里添加 下标 元素。
默认cache=[0] ,当 elem[expando] 没有获取到时,则往数组里 添加一个下标,同时下标又与数组是关联起来的。
如果elem[expando]获取到时,则直接返回 cache[cacheIndex] 。
这点搞定后,那就简单了,就是往一个空对象中 配置 属性了。
进一步修改函数:
// WITH ENCAPSULATION:
(function(){
var cache = [0],
expando = 'data' + +new Date();
function data(elem) {
var cacheIndex = elem[expando],
nextCacheIndex = cache.length;
if(!cacheIndex) {
cacheIndex = elem[expando] = nextCacheIndex;
cache[cacheIndex] = {};
}
return {
get : function(key) {
return cache[cacheIndex][key];
},
set : function(key, val) {
cache[cacheIndex][key] = val;
return val;
}
}
}
window.data = data;
})();
用法:
var myElem = document.getElementById('id');
// 设置data:
data(myElem).set('customProperty', 12345);
// 获取data:
data(myElem).get('customProperty'); // returns 12345
ok,一个类似jQuery的data()函数就完成了。
其实我自己还是觉得用对象更好处理一些,一来,对象不象数组,一定要用下标才能读取,而且对于对象的覆盖等,也方便很多。删除的话也容易。
Tags: data, cache, 缓存
Javascript | 评论:0
| 阅读:29295