首頁 >web前端 >js教程 >JavaScript設計模式之一Interface介面

JavaScript設計模式之一Interface介面

高洛峰
高洛峰原創
2016-11-25 11:09:221538瀏覽

如何用物件導向的想法來寫JavaScript,對於初學者應該是比較難的,我們常用的JQuery其實也是用物件導向的想法去封裝的,今天我們來看看如何在Javascript中用Interface,在C#還是JAVA中都應該針對介面設計我們的程序,在C#和Java中都Interface這樣的關鍵字,但是JavaScript中沒有對應的機制,但是Javascript很靈活,我們可以用它的特性去模仿Interface,但是我們需要加入一些methods來做check的動作。
我們來看下一個Interface的作用: 

繼承了這個Interface就必須要實現這個Interface中定義的方法(方法簽章)

//JavaScript 現在還做不到方法的簽章的限制
var Interface = function (name, methods) {     

   if (arguments.length != 2) {     

      throw new Error("the interface than  }      

  this.Name = name;     

   this. Method = [];     

   for (var i = 0; i

      "the method name is not string");    

    }        this.Method.push(methods[i]);   

 interface*/  

  Interface.ensureImplement = function (object) {  

      if ( arguments.length

           throw new Error("there is not Interface or the instance   1; i

          var interface1 = arguments[i];      

      if (interface1.constructor !== Interface) {                    

 }            

for (var j = 0; j

 var method = interface1.Method[j];     ect[method] !== function) {                  

  throw new Error("you instance doesnt implement the interface");                                

   }   

 }

我們來分析code,而我們現在的做法是用來比較一個Instance中的方法名稱在介面中是否定義了。

我先定義一個介面(2個參數),第二個參數是介面中的方法名稱。 Check方法用簡單的2層for迴圈來做比較動作。

我們來看看如何使用這個介面:

 var Person = new Interface("Person", ["GetName", "GetAge"]);      var Man = function (name, Name .Age = age;    }    Man.prototype = { GetName: function () { return this.Name; },      //  GetAge: function () { return this       Interface.ensureImplement (instance, Person);           var name = instance.GetName();        alert(name);    }   出錯。在ensureImplement的時候發現並沒有去實作這個方法。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn