架构型设计模式
一类框架结构,通过提供一些子系统,指定他们的职责,并将它们条理清晰的组织在一起
1.同步模块模式
模块化:将复杂的系统分解成高内聚、低耦合的模块,使系统开发变得可控、可维护、可拓展、复用率更高
同步模块模式(SMD),请求发出后,无论模块是否存在,立即执行后续的逻辑,对模块的立即引用
1.1排队开发
多人实现,某一处耦合了多人的实现代码,出现排队开发
1.2模块化开发
工程师独立的去开发自己的模块,模块之间也可相互调用
首先得有一个模块管理器,管理着模块的创建和调度
调度:同步模块调度 异步模块调度
1.3模块管理器
定义一个模块管理对象,再为其创建一个模块定义方法define
//定义模块管理器单体对象
var F = F || {};
//模块方法按理应该放在闭包中,这里为了更清晰明白
F.define = function(str, fn){
var parts = str.split('.'),
old = parent = this,
i = len = 0;
if(parts[0] === 'F'){
parts = parts.slice(1);
}
if(parts[0] == 'define' || parts[0] === 'module'){
return;
}
for(len = parts.length; i < len; i++){
if(typeof parent[parts[i]] === 'undefined'){
parent[parts[i]] = {};
}
old = parent;
parent = parent[parts[i]];
}
if(fn){
old[parts[--i]] = fn();
}
return this;
}
1.4模块调用方法
要使用模块,需要一个'使用'模块方法-module
F.module = function(){
var args = [].slice.call(arguments),
fn = args.pop(),
parts = args[0] && args[0] instanceof Array ? args[0] : args,
modules = [],
modIDs = '',
i = 0,
ilen = parts.length,
parent, j, jlen;
while(i < ilen){
if(typeof parts[i] === 'string'){
parent = this;
modIDs = parts[i].replace(/^F./, '').split('.');
for(j = 0, jlen = modIDs.length; j < jlen; j++){
parent = parent[modIDs[j]] || false;
}
modules.push(parent);
}else{
modules.push(parts[i]);
}
i++;
}
fn.apply(null, modules);
}
1.5调用模块