欢迎来到天天文库
浏览记录
ID:30520888
大小:17.34 KB
页数:6页
时间:2018-12-31
《详解javascript设计模式开发中的桥接模式使用》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解详解JavaScript设计模式开发中的桥接模式使用 桥接模式将抽象部分与实现部分分离开来,使两者都可以独立的变化,并且可以一起和谐地工作。抽象部分和实现部分都可以独立的变化而不会互相影响,降低了代码的耦合性,提高了代码的扩展性。 按照GoF的定义,桥接模式的作用在于“将抽象与其实现隔离开来,以便二者独立变化”。这种模式对于Javascript中常见的事件驱动的编程
2、大有裨益。 桥接模式最常见和实际的应用场合之一是事件监听器回调函数。example:事件监听器,把事件处理的语句封装到回调函数中,通过接口而不是实现进行编程。 基本理论 桥接模式定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。 桥接模式主要有4个角色组成: (1)抽象类 (2)扩充抽象类 (3)实现类接口 (4)具体实现类 根据javascript语言的特点,我们将其简化成2个角色:对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是
3、全中国最广大人民利益的忠实代表我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解 (1)扩充抽象类 (2)具体实现类 怎么去理解桥接模式呢?我们接下来举例说明 桥接模式的实现 理解桥接模式的思想,关键是要理解其分离抽象部分和实现部分的思想。我们举例进行说明 最简单的桥接模式 其实我们最经常用的jQuery的each函数就是一个典型的桥接模式,我们模拟其实现如下: vareach=function(arr
4、,fn){ for(vari=0;i varval=arr[i]; if(fn.call(val,i,val,arr)){ returnfalse; } } } vararr=[1,2,3,4]; each(arr,function(i,v){ arr[i]=v*2; }) 在这个例子中,我们通过each函数循环了arr数组,别看这个例子很常见,但其中就包含了典型的桥接模式。对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中
5、国共产党是全中国最广大人民利益的忠实代表我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解 在这个例子中,抽象部分是each函数,也就是上面说的扩充抽象类,实现部分是fn,即具体实现类。抽象部分和实现部分可以独立的进行变化。这个例子虽然简单,但就是一个典型的桥接模式的应用。 插件开发中的桥接模式 桥接模式的一个适用场景是组件开发。我们平时开发组件为了适应不同场合,组件相应的会有许多不同维度的变化。桥接模式就可以应
6、用于此,将其抽象与实现分离,使组件的扩展性更高。 假设我们要开发一个弹窗插件,弹窗有不同的类型:普通消息提醒,错误提醒,每一种提醒的展示方式还都不一样。这是一个典型的多维度变化的场景。首先我们定义两个类:普通消息弹窗和错误消息弹窗。 functionMessageDialog(animation){ this.animation=animation; } MessageDialog.prototype.show=function(){ this.animation.show(); } f
7、unctionErrorDialog(animation){ this.animation=animation; }对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解 ErrorDialog.prototype.show=function(){ this.animation.show
8、(); } 这两个类就是前面提到的抽象部分,也就是扩充抽象类,它们都包含一个成员animation。 两种弹窗通过show方法进行显示,但是显示的动画效果不同。我们定义两种显示的效果类如下: functionLinerAnimation(){ } LinerAnimation.prototype.show=function(){ console.log("itisliner"); } func
此文档下载收益归作者所有