function F1(){
this.method1=function(){ return this.method2()+this.method3()}
this.method2=function(){ }
this.method3=function(){ }
this.method4=function(){ return this.method2()+this.method5()}
this.method5=function(){}
}
var obj=new F1()比如说我自定义的F1这个类,要实现两个功能,第一个功能直接调取method1方法就可以实现, 而method1里面用到了method2和method3方法,第二个功能直接调取到method4方法就可以实现,method4里面用到了method2和method5方法,那么是不是就可以说method1和method4是“F1类的两个入口”?那“F1类的接口”又是什么啊?能不能还以F1类为例说明一下? 我知道接口分两种,“说明一个对象拥有哪些方法的手段”的这种接口我懂,我想问另外一种
“ 其实接口就是有广义和狭义两种。你的java教科书中定义的那个是狭义上的,或者说是正统的接口。而大家通俗的说的所谓的接口其实就是应用程序提供的功能或者服务的总称。想当年我也是灰常头疼这个问题,搞不清楚,那帮2b们事不事的就说接口,但明明可能就只是一些类而已,搞得我把书都翻烂了,还以为我理解力有问题。真不知道这是哪个2b开的先河,非得把功能服务之类的东西也说成是接口,妈的误导了多少无辜的初学者。始作俑者,装逼遭雷劈。 ”
$.fn.trackMap = function(options) {
var defaults = {
/* defaults */
}; options = $.extend({}, defaults, options); options.provider.showMap(
this[0],
options.latitude,
options.longitude,
options.icon,
options.title); options.feed.update(function(latitude, longitude) {
options.provider.updateMap(latitude, longitude);
}); return this;
};//最终执行函数
$("#map_canvas").trackMap({
latitude: 35.044640193770725,
longitude: -89.98193264007568,
icon: 'http://bit.ly/zjnGDe',
title: 'Tracking Number: 12345',
feed: updater,
provider: trackMap.googleMapsProvider
});那么整个过程的入口就是$.fn.trackMap函数,说到接口,看主函数体内的showMap方法。那么只要实现了showMap方法,都说这个对象实现了provider接口,即provider提供了一个showMap的方法。
严格来说只能说类实现了某个接口,但javascript无法实现正规接口。所以只要某个对象拥有showMap方法,就说这个对象实现了provider接口。
update类似
这里用你的代码模拟一个例子吧://javascript无法实现接口,设计中留出一个虚函数,比如一个打印print
function F1(cfg){
this.id = 'id';
this.name = 'name';
this.method1=function(){ return this.method2()+this.method3()}
this.method2=function(){ }
this.method3=function(){ }
this.method4=function(){ return this.method2()+this.method5()}
this.method5=function(){}
cfg.printer.print(this)//调用一个实现了print方法的对象
}
var P1 = {//一个实现了print方法的对象
print:function(obj){alert(obj.name)}
};
var P2 = {//另外一个实现了print方法的对象
print:function(obj){alert(obj.id)}
};
var obj=new F1({
printer:P2
//printer:P1
});//函数F1是主函数,入口。