首页 >> js开发 >> js代码JavaScript设计模式--桥梁模式引入操作实例分析
js代码JavaScript设计模式--桥梁模式引入操作实例分析
发布时间: 2021年1月13日 | 浏览:
| 分类:js开发
本文实例讲述了JavaScript设计模式--桥梁模式引入操作。分享给大家供大家参考,具体如下:1.使用情况(1)事件的监控#1,利用页面的button来选择宠物的例子(思路)
button.addEvent(element,"click",getPetByBame);
function getPetByBame(e){
var id = this.id;
asyncRquest("GET",'pet.action?id='+id,function(pet){
consols.log("request pet"+pet.resopnseText)
})
}
button.addEvent(element,"click",getPetByBame);
function getPetByBame(e){
var id = this.id;
asyncRquest("GET",'pet.action?id='+id,function(pet){
consols.log("request pet"+pet.resopnseText)
})
}
#2,addEvent函数
/*obj:需要增加事件的对象
* type:事件名称
* fn:执行事件的函数
* */
function addEvent(obj,type,fn){//addEvent:为某个文档节点增加事件的方法
if(obj.addEventListener){//Mozilla中:
obj.addEventListener(type,fn,false);
}else if(obj.attachEvent){//IE中:
obj["e"+type+fn] = fn;
obj[type+fn] = function(){
obj["e"+type+fn]()
}
obj.attachEvent("on"+type,fn)
}
}
/*obj:需要增加事件的对象
* type:事件名称
* fn:执行事件的函数
* */
function addEvent(obj,type,fn){//addEvent:为某个文档节点增加事件的方法
if(obj.addEventListener){//Mozilla中:
obj.addEventListener(type,fn,false);
}else if(obj.attachEvent){//IE中:
obj["e"+type+fn] = fn;
obj[type+fn] = function(){
obj["e"+type+fn]()
}
obj.attachEvent("on"+type,fn)
}
}
总结:该种方式对于单元测试很难进行改进为用简单的桥梁模式来解决#1,后台中的api
function getPetByBame(id,callBack){
sayncRquest("GET",'url?id='+id,function(pet){
callBack(pet)
})
function getPetByBame(id,callBack){
sayncRquest("GET",'url?id='+id,function(pet){
callBack(pet)
})
#2,桥梁
//定义一个桥梁叫抽象和实现相互联系在一起
addEvent(element,"click",getPetByNameBridge)
function getPetByNameBridge(){
getPetByBame(this.id,function(pet){
consols.log("request pet"+pet.resopnseText);
})
}
//定义一个桥梁叫抽象和实现相互联系在一起
addEvent(element,"click",getPetByNameBridge)
function getPetByNameBridge(){
getPetByBame(this.id,function(pet){
consols.log("request pet"+pet.resopnseText);
})
}
总结:这种做法使API和展现层完全分离,API和展现层可以灵活的变动。(2)特权函数
//特权函数
var privilege=function () {
//信息全封闭,内部业务逻辑复杂,做成一个特权函数,使调用方便
var complex=function (x,y) {
//复杂的数学处理
}
this.bridge=function () { //提供公共接口,返回一个单体
return {
bridgeAdd:function () {
//处理前
complex(1,2);
//处理后
}
}
}
}
//特权函数
var privilege=function () {
//信息全封闭,内部业务逻辑复杂,做成一个特权函数,使调用方便
var complex=function (x,y) {
//复杂的数学处理
}
this.bridge=function () { //提供公共接口,返回一个单体
return {
bridgeAdd:function () {
//处理前
complex(1,2);
//处理后
}
}
}
}
(3)多个类的连接
//多个类的连接
var class1=function (a,b) {
this.a=a;
this.b=b;
}
var class2=function (e) {
this.e=e;
}
//桥梁的连接
var bridgeClass=function () {
this.one=new Class1(1,2);
this.two=new Class1(1);
}
//目的:两个类能独立的修改,而门面的意义在于调用方便
//多个类的连接
var class1=function (a,b) {
this.a=a;
this.b=b;
}
var class2=function (e) {
this.e=e;
}
//桥梁的连接
var bridgeClass=function () {
this.one=new Class1(1,2);
this.two=new Class1(1);
}
//目的:两个类能独立的修改,而门面的意义在于调用方便
桥梁模式:感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools./code/HtmlJsRun测试上述代码运行效果。在线HTML/CSS/JavaScript代码运行工具在线HTML/CSS/JavaScript代码运行工具http://tools./code/HtmlJsRun关于JavaScript相关内容感兴趣的读者可查看本站专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》javascript面向对象入门教程JavaScript错误与调试技巧总结JavaScript数据结构与算法技巧总结JavaScript遍历算法与技巧总结JavaScript数学运算用法总结希望本文所述对大家JavaScript程序设计有所帮助。
button.addEvent(element,"click",getPetByBame);
function getPetByBame(e){
var id = this.id;
asyncRquest("GET",'pet.action?id='+id,function(pet){
consols.log("request pet"+pet.resopnseText)
})
}
button.addEvent(element,"click",getPetByBame);
function getPetByBame(e){
var id = this.id;
asyncRquest("GET",'pet.action?id='+id,function(pet){
consols.log("request pet"+pet.resopnseText)
})
}
#2,addEvent函数
/*obj:需要增加事件的对象
* type:事件名称
* fn:执行事件的函数
* */
function addEvent(obj,type,fn){//addEvent:为某个文档节点增加事件的方法
if(obj.addEventListener){//Mozilla中:
obj.addEventListener(type,fn,false);
}else if(obj.attachEvent){//IE中:
obj["e"+type+fn] = fn;
obj[type+fn] = function(){
obj["e"+type+fn]()
}
obj.attachEvent("on"+type,fn)
}
}
/*obj:需要增加事件的对象
* type:事件名称
* fn:执行事件的函数
* */
function addEvent(obj,type,fn){//addEvent:为某个文档节点增加事件的方法
if(obj.addEventListener){//Mozilla中:
obj.addEventListener(type,fn,false);
}else if(obj.attachEvent){//IE中:
obj["e"+type+fn] = fn;
obj[type+fn] = function(){
obj["e"+type+fn]()
}
obj.attachEvent("on"+type,fn)
}
}
总结:该种方式对于单元测试很难进行改进为用简单的桥梁模式来解决#1,后台中的api
function getPetByBame(id,callBack){
sayncRquest("GET",'url?id='+id,function(pet){
callBack(pet)
})
function getPetByBame(id,callBack){
sayncRquest("GET",'url?id='+id,function(pet){
callBack(pet)
})
#2,桥梁
//定义一个桥梁叫抽象和实现相互联系在一起
addEvent(element,"click",getPetByNameBridge)
function getPetByNameBridge(){
getPetByBame(this.id,function(pet){
consols.log("request pet"+pet.resopnseText);
})
}
//定义一个桥梁叫抽象和实现相互联系在一起
addEvent(element,"click",getPetByNameBridge)
function getPetByNameBridge(){
getPetByBame(this.id,function(pet){
consols.log("request pet"+pet.resopnseText);
})
}
总结:这种做法使API和展现层完全分离,API和展现层可以灵活的变动。(2)特权函数
//特权函数
var privilege=function () {
//信息全封闭,内部业务逻辑复杂,做成一个特权函数,使调用方便
var complex=function (x,y) {
//复杂的数学处理
}
this.bridge=function () { //提供公共接口,返回一个单体
return {
bridgeAdd:function () {
//处理前
complex(1,2);
//处理后
}
}
}
}
//特权函数
var privilege=function () {
//信息全封闭,内部业务逻辑复杂,做成一个特权函数,使调用方便
var complex=function (x,y) {
//复杂的数学处理
}
this.bridge=function () { //提供公共接口,返回一个单体
return {
bridgeAdd:function () {
//处理前
complex(1,2);
//处理后
}
}
}
}
(3)多个类的连接
//多个类的连接
var class1=function (a,b) {
this.a=a;
this.b=b;
}
var class2=function (e) {
this.e=e;
}
//桥梁的连接
var bridgeClass=function () {
this.one=new Class1(1,2);
this.two=new Class1(1);
}
//目的:两个类能独立的修改,而门面的意义在于调用方便
//多个类的连接
var class1=function (a,b) {
this.a=a;
this.b=b;
}
var class2=function (e) {
this.e=e;
}
//桥梁的连接
var bridgeClass=function () {
this.one=new Class1(1,2);
this.two=new Class1(1);
}
//目的:两个类能独立的修改,而门面的意义在于调用方便
桥梁模式:感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools./code/HtmlJsRun测试上述代码运行效果。在线HTML/CSS/JavaScript代码运行工具在线HTML/CSS/JavaScript代码运行工具http://tools./code/HtmlJsRun关于JavaScript相关内容感兴趣的读者可查看本站专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》javascript面向对象入门教程JavaScript错误与调试技巧总结JavaScript数据结构与算法技巧总结JavaScript遍历算法与技巧总结JavaScript数学运算用法总结希望本文所述对大家JavaScript程序设计有所帮助。
相关文章:
- jsvue键盘事件点击事件加native操作js大全
- js解决vue页面渲染但dom没渲染的操作js大全
- js解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题js大全
- jsVue组件跨层级获取组件操作js大全
- js代码处理JavaScript值为undefined的7个小技巧
- jsJS实现audio音频剪裁剪切复制播放与上传(步骤详解)js大全
- jsvue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)js大全
- jsvue+element-ui JYAdmin后台管理系统模板解析js大全
- js在vue中使用防抖函数组件操作js大全
- jsvue 监听窗口变化对页面部分元素重新渲染操作js大全