成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Javascript設計模式理論與實戰:橋接模式

開發 前端
橋接模式將抽象部分與實現部分分離開來,使兩者都可以獨立的變化,并且可以一起和諧地工作。抽象部分和實現部分都可以獨立的變化而不會互相影響,降低了代碼的耦合性,提高了代碼的擴展性。

橋接模式將抽象部分與實現部分分離開來,使兩者都可以獨立的變化,并且可以一起和諧地工作。抽象部分和實現部分都可以獨立的變化而不會互相影響,降低了代碼的耦合性,提高了代碼的擴展性。

[[155753]]

基本理論

橋接模式定義:將抽象部分與它的實現部分分離,使它們都可以獨立地變化。
橋接模式主要有4個角色組成:
(1)抽象類
(2)擴充抽象類
(3)實現類接口
(4)具體實現類
根據javascript語言的特點,我們將其簡化成2個角色:
(1)擴充抽象類
(2)具體實現類
怎么去理解橋接模式呢?我們接下來舉例說明

橋接模式的實現

理解橋接模式的思想,關鍵是要理解其分離抽象部分和實現部分的思想。我們舉例進行說明

最簡單的橋接模式

其實我們最經常用的jQuery的each函數就是一個典型的橋接模式,我們模擬其實現如下:

  1. var each = function (arr, fn) { 
  2.     for (var i = 0; i < arr.length; i++) { 
  3.         var val = arr[i]; 
  4.         if (fn.call(val, i, val, arr)) { 
  5.             return false
  6.         } 
  7.     } 
  8. var arr = [1234]; 
  9. each(arr, function (i, v) { 
  10.     arr[i] = v * 2
  11. }) 

在這個例子中,我們通過each函數循環了arr數組,別看這個例子很常見,但其中就包含了典型的橋接模式。

在這個例子中,抽象部分是each函數,也就是上面說的擴充抽象類,實現部分是fn,即具體實現類。抽象部分和實現部分可以獨立的進行變化。這個例子雖然簡單,但就是一個典型的橋接模式的應用。

插件開發中的橋接模式

橋接模式的一個適用場景是組件開發。我們平時開發組件為了適應不同場合,組件相應的會有許多不同維度的變化。橋接模式就可以應用于此,將其抽象與實現分離,使組件的擴展性更高。
假設我們要開發一個彈窗插件,彈窗有不同的類型:普通消息提醒,錯誤提醒,每一種提醒的展示方式還都不一樣。這是一個典型的多維度變化的場景。首先我們定義兩個類:普通消息彈窗和錯誤消息彈窗。 

  1. function MessageDialog(animation) { 
  2.     this.animation = animation; 
  3. MessageDialog.prototype.show = function () { 
  4.     this.animation.show(); 
  5. function ErrorDialog(animation) { 
  6.     this.animation = animation; 
  7. ErrorDialog.prototype.show = function () { 
  8.     this.animation.show(); 

這兩個類就是前面提到的抽象部分,也就是擴充抽象類,它們都包含一個成員animation。

兩種彈窗通過show方法進行顯示,但是顯示的動畫效果不同。我們定義兩種顯示的效果類如下:

 

  1. function LinerAnimation() { 
  2. LinerAnimation.prototype.show = function () { 
  3.     console.log("it is liner"); 
  4. function EaseAnimation() { 
  5. EaseAnimation.prototype.show = function () { 
  6.     console.log("it is ease"); 

 

這兩個類就是具體實現類,它們實現具體的顯示效果。那我們如何調用呢?

1 var message = new MessageDialog(new LinerAnimation());
2 message.show();
3 var error = new ErrorDialog(new EaseAnimation());
4 error.show();

如果我們要增加一種動畫效果,可以再定義一種效果類,傳入即可。

總結

學習橋接模式關鍵是要理解抽象部分與實現部分的分離,使得二者可以獨立的變化,而不必拘泥于形式。JS插件靈活的變化,適用場景的多變就非常適合使用這種模式來實現。使用橋接模式最重要的是要找出系統中不同的變化維度。

原文地址:http://luopq.com/2015/11/11/design-pattern-bridge/

 
責任編輯:王雪燕 來源: 博客園
相關推薦

2015-11-03 09:43:43

avascript設計模式工廠模式

2020-10-28 11:56:47

橋接模式

2022-01-14 09:22:22

設計模式橋接

2015-11-25 11:10:45

Javascript設計觀察

2021-03-05 07:57:41

設計模式橋接

2024-04-12 12:10:18

Python設計模式開發

2022-05-11 08:17:15

Java字符串API

2011-06-01 16:10:42

JNBridge

2010-03-19 11:07:57

點對點無線橋接模式

2023-11-02 21:11:11

JavaScript設計模式

2020-05-08 17:05:11

VMware網絡NAT

2015-09-08 13:39:10

JavaScript設計模式

2010-02-06 15:17:41

Ubuntu Serv

2012-02-29 09:41:14

JavaScript

2022-02-21 15:52:10

抽象橋梁模式結構模式

2012-08-30 09:07:33

設計模式

2021-10-22 09:41:26

橋接模式設計

2012-10-29 11:16:13

2021-01-07 10:30:23

設計模式

2012-04-12 09:38:21

JavaScript
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜羞羞 | 免费观看羞羞视频网站 | 精品国产三级 | 日日干日日色 | 精品久久久久久亚洲综合网 | 成年人在线观看 | 欧美黄色网| 91久久伊人 | 夜夜操天天艹 | 久久爱综合 | 成人在线免费网站 | 一区二区精品在线 | 欧美成人h版在线观看 | 免费艹逼视频 | 亚洲精品一 | 久久99网 | 91伊人网 | 天天草天天干天天 | 99婷婷| 欧美亚洲在线视频 | 日韩欧美一二三区 | 久久久精品一区二区三区 | 久久精品99国产精品日本 | 久久精品国产99国产精品 | 偷牌自拍 | 欧美黄色一区 | 欧美日韩综合 | 色站综合| 久久久久国产精品 | 国产精品久久久久久久久免费丝袜 | 久久久久一区 | 国产精品成人国产乱 | 欧美一级大片免费看 | 亚洲狠狠 | 九色91视频 | 亚洲第1页 | 亚洲成人播放器 | japanhd美女动 | 福利视频网址 | 国产成人精品午夜视频免费 | 在线日韩福利 |