结构型设计模式
- 1、外观模式
解决的问题:给一系列的子系统提供一个更高级的统一调用接口
用处:1,当发现需要调用的接口太多了,
2,我们写的程序,最终暴露出一个统一的接口
banner.begin=function(){
banner.init();
banner.img();
if(banner.testie()){
banner.runie();
}else{
banner.run();
}
}
- 2、适配器模式
解决问题:接口不适配的问题。其实就是写一个转化器
应用 :1,框架的变更
2,数据适配
window.a=function(){
//假设a是自己写的框架
}
//写一个适配器方法
function adapt(a){
// 适配方法
a.css=function(){
//重写
}
// 适配对象
window.$=a;
}
adapt(a);
//写一个数据适配
function dataadapt(ob){
//处理数据
return ob
}
- 3、装饰者模式
解决问题是:在不修改目标源代码的情况下给他扩展功能。
//自有框架A
A.afuntion=function(){
};
//使用方法前先运行这个代码扩展
//破坏性
var _fn=A.afuntion;
A.afuntion=function(){
_fn.call(A);
//扩展我们的方法
}
//非破坏性
function af(){
A.afuntion();
}
4、享元模式
解决问题:理解成划分模块的指导思想
写法过程:不断的用享元提取公共部分,独立成模块(模块拆分)。
然后桥接互相调用
总结:先享元细化模块,再桥接互相调用。最后暴露的时候去外观模式统一一个接口
装饰者和适配器用来解决具体,比如动画模块用的是第三方的库,用来指导改造。
function window(){
}
window.prototype={
show:function(){
//想一想这个展示模块里,有什么是相同的,再提取为自模块。
//比如一个展示模块在提取成显示与动画模块
function changetoBlock(){
}
function animation(type){
var _way={
//定义一系列的动画
}
changetoBlock(_way[type]);
}
},
create:function(){
},
hidden:function(){
}
}
网友评论