JavaScriptインターフェースの実現方法の実例分析
6438 ワード
本論文の実例は、JavaScriptインターフェースの実現方法を説明する。皆さんに参考にしてあげます。具体的には以下の通りです。
JavaScriptでインターフェースを実現する方法は3つあります。
第一に、注釈を使用した方法でインターフェースを実現する。
特徴:
(1)一番簡単ですが、一番弱い機能です。
(2)インターフェースとimplementの「文字」を利用する
(3)彼らを注釈で表現する
具体的な実現は以下の通りです。
1,注釈でインターフェースを定義する
(1)誰が誰に実現されたかを文字で伝える
(2)メリットは、このように意義があり、大型プロジェクトに必要なのは規範と標準であり、書いていないで実現する前に、アーキテクチャと設計を十分に考慮することができる。
(3)短所:人工的に注釈の説明を守る必要があります。
第二に、属性検査法を用いてインターフェースを実現する。実質的には属性判断で誰が実現しましたか?
具体的には以下の通りです
1,注釈でインターフェースを定義します。
そこで三つ目の鴨式変形法があります。インターフェースでの方法が実現されているかどうかを確認します。
第三に、アヒルの変形法は形のようなネーミング方法であり、オブジェクトにある方法がインターフェースで定義された方法と同名である場合、このインターフェースが実現されたと考えられる。
具体的には以下の通りです
1つのインターフェースを定義します。ここは上の二つと違っています。コメントを書かなくても大丈夫です。
注意してください。静的な方法はInterface.prototypeと書かないでください。これはインターフェースのプロトタイプチェーンに書いたものです。静的な関数を直接クラスレベルに書きます。
3.1自分のインターフェースを定義する
例えば、ここで二つのインターフェースを定義します。
興味のある友達はオンラインHTML/CSS/JavaScriptコードを使ってツールを実行できます。http://tools.jb51.net/code/HtmlJsRun上記コードの運行効果をテストします。
もっと多くのJavaScriptに関する内容に興味がある読者は、当駅のテーマを見ることができます。「javascript対象向け入門教程」、「JavaScriptエラーとデバッグテクニックのまとめ」、「JavaScriptデータ構造とアルゴリズム技術のまとめ」、「JavaScriptはアルゴリズムと技術の総括を遍歴します。」および「JavaScript数学演算の使い方のまとめ」
本論文で述べたように、JavaScriptプログラムの設計に役に立ちます。
JavaScriptでインターフェースを実現する方法は3つあります。
第一に、注釈を使用した方法でインターフェースを実現する。
特徴:
(1)一番簡単ですが、一番弱い機能です。
(2)インターフェースとimplementの「文字」を利用する
(3)彼らを注釈で表現する
具体的な実現は以下の通りです。
1,注釈でインターフェースを定義する
/*
* interface PersonDao(){
* function add(obj);
* function remove(obj);
* function find(id);
* }
* */
(2)実現インターフェースを注釈で明記する
/*
* PersonDaoImp implement PersonDao (PersonDaoImp PersonDao)
* */
var PersonDaoImp=function () { };//
//
PersonDaoImp.prototype.add=function(obj){
//
}
PersonDaoImp.prototype.remove=function(obj){
//
}
PersonDaoImp.prototype.find=function(id){
//
}
まとめ:(1)誰が誰に実現されたかを文字で伝える
(2)メリットは、このように意義があり、大型プロジェクトに必要なのは規範と標準であり、書いていないで実現する前に、アーキテクチャと設計を十分に考慮することができる。
(3)短所:人工的に注釈の説明を守る必要があります。
第二に、属性検査法を用いてインターフェースを実現する。実質的には属性判断で誰が実現しましたか?
具体的には以下の通りです
1,注釈でインターフェースを定義します。
/*
* interface PersonDao(){
* function add(obj);
* function remove(obj);
* function find(id);
* }
* */
2,インターフェースクラス+実装クラスに属性を追加することをコメントで説明します。
/*
* PersonDaoImp implement PersonDao
* */
var PersonDaoImp=function () {
this.implementInterface=["PersonDao"];// ,
}
PersonDaoImp.prototype.add=function(obj){
alert(obj);
}
PersonDaoImp.prototype.remove=function(obj){
//
}
PersonDaoImp.prototype.find=function(id){
//
}
(3)属性を検査する方法
// Object
function imp1(Object) {
// i=1: , , i=1
for(var i=1;i<arguments.length;i++){//arguments Object
var interfaceName=arguments[i];
var interfaceFind=false;
for(var j=0;j<Object.implementInterface.length;j++){
if(Object.implementInterface[j]==interfaceName){
interfaceFind=true;
break;
}
}
if(!interfaceFind){
return false;
}
}
return true;
}
(4)インターフェースと実現類の協力実現
function addObj(obj) {
var PersonDao=new PersonDaoImp();
//
if(!imp1(PersonDao,"PersonDao")){// ( , ) ,
throw new Error("PersonDaoImp PersonDao");
}else{//
PersonDao.add(obj);
}
}
(5)使用
addObj(" ");
まとめてみますと、この方法は実現時に属性と同じインターフェース名が伝達されているかどうかを簡単に判断するだけで、方法が実現されているかどうかを検証していません。そこで三つ目の鴨式変形法があります。インターフェースでの方法が実現されているかどうかを確認します。
第三に、アヒルの変形法は形のようなネーミング方法であり、オブジェクトにある方法がインターフェースで定義された方法と同名である場合、このインターフェースが実現されたと考えられる。
具体的には以下の通りです
1つのインターフェースを定義します。ここは上の二つと違っています。コメントを書かなくても大丈夫です。
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]);
}
}
}
2,1つの静的方法を定義して、インターフェースと実装クラスの直接検査を実現する。注意してください。静的な方法はInterface.prototypeと書かないでください。これはインターフェースのプロトタイプチェーンに書いたものです。静的な関数を直接クラスレベルに書きます。
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(" ")
}
}
}
}
3,適用3.1自分のインターフェースを定義する
例えば、ここで二つのインターフェースを定義します。
var FirstInterface=new Interface("FirstInterface",["add","remove","search"]);//
var SecondInterface=new Interface("SecondInterface",["save"]);//
3.2、実現類を定義する
function commManager() {//
//
this.add=function () {
alert("ok-- ");
}
this.remove=function () {
}
this.search=function () {
}
this.save=function () {
}
//
Interface.ensureImplement(this,GridManager,formManager);
}
3.3、実現類の実用化
var comm=new commManager();
comm.add();//
まとめ:3つの方法は自分の長所と短所があります。それぞれの選択は自分の必要に応じて選択します。しかし、設計の際にはクラス間の低結合を実現することが重要です。興味のある友達はオンラインHTML/CSS/JavaScriptコードを使ってツールを実行できます。http://tools.jb51.net/code/HtmlJsRun上記コードの運行効果をテストします。
もっと多くのJavaScriptに関する内容に興味がある読者は、当駅のテーマを見ることができます。「javascript対象向け入門教程」、「JavaScriptエラーとデバッグテクニックのまとめ」、「JavaScriptデータ構造とアルゴリズム技術のまとめ」、「JavaScriptはアルゴリズムと技術の総括を遍歴します。」および「JavaScript数学演算の使い方のまとめ」
本論文で述べたように、JavaScriptプログラムの設計に役に立ちます。