国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JavaScript設計模式之裝飾者模式實例詳解

2024-05-06 15:43:10
字體:
來源:轉載
供稿:網友

本文實例講述了JavaScript設計模式之裝飾者模式。分享給大家供大家參考,具體如下:

這里我們通過需求逐漸引出裝飾者模式。

下面是一個關于幾代汽車的不同逐漸體現裝飾者模式的。

首先,我們先引入一個接口文件----目的為檢驗實現類是否完全實現接口中的方法,代碼如下,

//定義一個靜態(tài)方法來實現接口與實現類的直接檢驗//靜態(tài)方法不要寫出Interface.prototype ,因為這是寫到接口的原型鏈上的//我們要把靜態(tài)的函數直接寫到類層次上//定義一個接口類var Interface=function (name,methods) {//name:接口名字  if(arguments.length<2){    alert("必須是兩個參數")  }  this.name=name;  this.methods=[];//定義一個空數組裝載函數名  for(var i=0;i<methods.length;i++){    if(typeof methods[i]!="string"){      alert("函數名必須是字符串類型");    }else {      this.methods.push( methods[i]);    }  }};Interface.ensureImplement=function (object) {  if(arguments.length<2){    throw new Error("參數必須不少于2個")    return false;  }  for(var i=1;i<arguments.length;i++){    var inter=arguments[i];    //如果是接口就必須是Interface類型    if(inter.constructor!=Interface){      throw new Error("如果是接口類的話,就必須是Interface類型");    }    //判斷接口中的方法是否全部實現    //遍歷函數集合分析    for(var j=0;j<inter.methods.length;j++){      var method=inter.methods[j];//接口中所有函數      //object[method]傳入的函數      //最終是判斷傳入的函數是否與接口中所用函數匹配      if(!object[method]||typeof object[method]!="function" ){//實現類中必須有方法名字與接口中所用方法名相同        throw new Error("實現類中沒有完全實現接口中的所有方法")      }    }  }}

(1)統(tǒng)一接口

var ShopInterface=new Interface("FirstShop",["getPrice","assemble"]);//規(guī)定了實現的方法

(2)實現接口并內部檢驗

var first=function () {    //接口實現部分    this.getPrice=function () {      document.write(15000+"<br>")    }    this.assemble=function () {     document.write("汽車組裝....<br>")    }    Interface.ensureImplement(this,ShopInterface);//檢驗類是否實現接口}

(3)第一個汽車實例

//第一個汽車實例var firstShop=new first();firstShop.getPrice();firstShop.assemble();document.write("...............first...............<br>")

現在我們開始有一個新的需求,汽車需要有附屬的產品如: 音響(K) ,真皮沙發(fā)(M),保險杠(N)。

通過分析我們可以知道,每一個附屬的產品會影響到到汽車的組裝和其價格,那我們能想到什么辦法呢?

第一種方案:通過 修改接口

(1)接口定義為

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 墨玉县| 娄底市| 凤山县| 礼泉县| 靖远县| 藁城市| 上犹县| 武强县| 宜黄县| 呈贡县| 宜良县| 吐鲁番市| 建湖县| 贵港市| 林州市| 中江县| 通许县| 新巴尔虎右旗| 锦州市| 泽普县| 鄄城县| 大埔县| 临城县| 宜阳县| 永州市| 阳东县| 河东区| 云林县| 沾益县| 衡东县| 邵阳县| 武安市| 宜兰市| 阳西县| 东乡| 天等县| 巍山| 农安县| 巴彦淖尔市| 习水县| 库尔勒市|