javascript设计模式交流(五) ——Composite Pattern
来源:互联网 发布:declare sql用法 编辑:程序博客网 时间:2024/06/06 10:52
导读:
组合模式是一种应用广泛的模式,在web开发中更是大量使用,Silverlight的很多对象都有Group机制,即是组合模式的典型应用。
组合模式常常被误解为树型结构或者集合,请体会下面两种关系:
一个几何图形是几何图形,几个几何图形的组合仍然是几何图形
一个人是人,但几个人的集合不是人
组合模式适合的正是前者所描述的情形:总体和个体实现了同一个接口。
对任何语言来说,实现组合模式都不是很困难的事。对js来说,组合模式的实现又有很多有趣的特点和方法.
functional组合模式函数组合
将2个函数组合为一个函数是一个很容易想到的行为,但极少数语言提供这种机制。表面上看js并未提供这种机制,但是实际上只需要给函数添加一个原型方法,就能轻松实现将几个函数组合成一个(剽窃自月影):
Function.prototype.concat = function()
{
var funcs = [this].concat(Array.apply([], arguments));
return function(){
var ret = [];
for(var i = 0 i < funcs.length; i++)
{
var func = funcs[i] instanceof Function ? funcs[i] : new Function(funcs[i]);
ret.push(func.apply(this, arguments));
}
return ret;
}
}/*//用下面代码测试效果
var a = new Function("return 0");
a=a.concat(function(){return 1}, function(){return 2}, function(){return 3});
alert(a());*/
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=2159472
本文转自
http://blog.csdn.net/dead_of_winter/archive/2008/03/09/2159472.aspx
组合模式是一种应用广泛的模式,在web开发中更是大量使用,Silverlight的很多对象都有Group机制,即是组合模式的典型应用。
组合模式常常被误解为树型结构或者集合,请体会下面两种关系:
一个几何图形是几何图形,几个几何图形的组合仍然是几何图形
一个人是人,但几个人的集合不是人
组合模式适合的正是前者所描述的情形:总体和个体实现了同一个接口。
对任何语言来说,实现组合模式都不是很困难的事。对js来说,组合模式的实现又有很多有趣的特点和方法.
functional组合模式函数组合
将2个函数组合为一个函数是一个很容易想到的行为,但极少数语言提供这种机制。表面上看js并未提供这种机制,但是实际上只需要给函数添加一个原型方法,就能轻松实现将几个函数组合成一个(剽窃自月影):
Function.prototype.concat = function()
{
var funcs = [this].concat(Array.apply([], arguments));
return function(){
var ret = [];
for(var i = 0 i < funcs.length; i++)
{
var func = funcs[i] instanceof Function ? funcs[i] : new Function(funcs[i]);
ret.push(func.apply(this, arguments));
}
return ret;
}
}/*//用下面代码测试效果
var a = new Function("return 0");
a=a.concat(function(){return 1}, function(){return 2}, function(){return 3});
alert(a());*/
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=2159472
本文转自
http://blog.csdn.net/dead_of_winter/archive/2008/03/09/2159472.aspx
- javascript设计模式交流(五) ——Composite Pattern
- javascript设计模式交流(一) ——Singleton Pattern
- javascript设计模式交流(一) ——Singleton Pattern
- [讨论]javascript设计模式交流(二) ——Prototype Pattern
- javascript设计模式交流(四) ——Interpreter Pattern
- javascript设计模式交流(一) ——Singleton Pattern
- 设计模式——组合模式(Composite Pattern)
- 设计模式(10)——组合模式(Composite Pattern)
- 设计模式 —— 组合模式(Composite Pattern)
- java设计模式——组合模式(Composite Pattern)
- Java设计模式——组合模式(Composite Pattern)
- Java设计模式——组合模式(Composite Pattern)
- Java设计模式——组合模式(Composite Pattern)
- JavaScript设计模式学习——Composite
- 设计模式—Composite模式
- 【设计模式】结构型模式——组合模式(Composite Pattern)
- 我所理解的设计模式(C++实现)——组合模式(Composite Pattern)
- 设计模式(2)——组合模式(Composite Pattern)
- WEB PACS with JPIP
- javascript设计模式交流(四) ——Interpreter Pattern
- 线程的实现
- 你知道C#中main函数参数的用处吗?
- 网游“包身工”:我们是累并枯燥的哑巴
- javascript设计模式交流(五) ——Composite Pattern
- 法拉利340教程(详细教程)[转载]
- 发职位喽
- tomcat 发生了java.lang.OutOfMemoryError: PermGen space
- 用.NET框架实现序列化
- 第九章 配置和调度(rainbow 翻译)
- 网上下载和上传数据
- document.getElementById主要是做什么用的?
- 节点标识的两种方式的比较