下面是JAVASCRIPT设计模式书上讲的接口的定义。鸭式辩型法
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
var Interface = function(name, methods){
if(arguments.length != 2){
throw new Error('Interface constructor called with ' + arguments.length
+ 'arguments, but expected exactly 2.');
}
this.name = name;
this.methods = [];
for(var i=0,len = methods.length; i<len; i++){
if(typeof methods[i] != 'string'){
throw new Error('Interface constructor expected method names to be '
+ 'passed in as a string.');
}
this.methods.push(methods[i]);
}
};
Interface.ensureImplements = function(object){
if(arguments.length < 2){
throw new Error("Function Interface.ensureImplements called with " + arguments.length
+ " arguments, but expected at least 2.");
}
for(var i=1,len = arguments.length; i < len; i++){
var interface = arguments[i];
if(interface.constructor != Interface){
throw new Error("Function Interface.ensureImplements expects arguments "
+ "two and above to be instances of Interface.");
}
for(var j=0,methodslen = interface.methods.length; j < methodslen; j++){
var method = interface.methods[j];
if(!object[method] || typeof object[method] !== 'function'){
throw new Error("Function Interface.ensureImplements: object " +
"does not implements the " + interface.name + " interface.Method " +
method + " was not found.");
}
}
}
};
// 定义接口
var DynamicMap = new Interface('DynamicMap', ['centerOnPoint', 'zoom', 'draw']);
function displayRoute(mapInstance){
// 接口实现检查
Interface.ensureImplements(mapInstance, DynamicMap);
mapInstance.centerOnPoint(24, 13);
mapInstance.zoom(5);
mapInstance.draw();
}
// 对象
function Foo(){
}
Foo.prototype = {
centerOnPoint : function(x, y){
document.writeln('<br />centerOnPoint: ' + x + ', ' + y);
},
zoom : function(level){
document.writeln('<br />zoom: ' + level);
},
draw : function(){
document.writeln('<br />draw');
}
};
var foo = new Foo();
displayRoute(foo);
</script>
</head>
</html>
分享到:
相关推荐
JavaScript设计模式.pdf
在吃透了前面所说的书之后,接下来两本书的顺序已经无关紧要了,《JavaScript DOM高级程序设计》(注意和《JavaScript 高级程序设计》相区别)和《JavaScript设计模式》,这两本都是重量级的书,能让你的JS技术上一...
《JavaScript设计模式》是JavaScript设计模式的学习指南。全书分为14章。首先介绍了什么是模式、模式的结构、类别、模式的分类、如何编写模式等等;然后,集中介绍了很多流行的设计模式在JavaScript中的应用,包括...
javascript高级-javascript设计模式。视频文件(无加密可在线观看)
JavaScript设计模式与开发实践.pdf
JavaScript 设计模式(高清扫描版本)- 张容铭
本书在尊重《设计模式》原意的同时,针对JavaScript语言特性全面介绍了更适合JavaScript程序员的了16个常用的设计模式,讲解了JavaScript面向对象和函数式编程方面的基础知识,介绍了面向对象的设计原则及其在设计...
作者针对常见的开发任务,从YUI等实战代码中取材,提供了专家级的解决方案,不仅透彻剖析了JavaScript扣的面向对象编程,而且深入探讨了如何用JavaScript实现以前只在服务器端应用的设计模式,如何根据实际场景选择...
JavaScript设计模式+JavaScript模式+JavaScript异步编程,合计三本pdf文件,5分超值哦。
深入讲解Javascript开发原理以及Javascript客户端脚本开发的设计模式,看完该书可以拓展WEB开发人员的Javascript开发的思路。
javascript 设计模式与开发实践 作者 曾探 本书字体清晰,学习起来舒服。和张容铭的javascript设计模式相比,个人觉得有以下不同之处: 1、需要对原型链和闭包有一定的基础 2、案例比较经典并且通熟易懂,讲解特别...
为了帮助大家快速和较好地理解JavaScript设计模式中的单例模式,本文对JavaScript的单例模式进行了分析并进行简易的代码演示,希望本文能够给有需要的人带来一点小小的帮助。
外文翻译:学用JavaScript设计模式,pdf版本,中文版 设计模式是可重用的用于解决软件设计中一般问题的方案。设计模式如此让人着迷,以至在任何编程语言中都有对其进行的探索。 其中一个原因是它可以让我们站在巨人...
JavaScript设计模式之接口.docx
外文翻译:学用JavaScript设计模式
为了让每一章中的示例都尽可能地贴近实际应用,书中同时列举了一些JavaScript程序员最常见的任务,然后运用设计模式使其解决方案变得更模块化、更高效并且更易维护,其中较为理论化的例子则用于阐明某些要点。...
Javascript 设计模式 很经典 第一本 Javascript 设计模式 很经典 第一本 Javascript 设计模式 很经典 第一本
JAVASCRIPT设计模式[收集].pdf