下面是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语言面向对象和函数式编程的知识、设计模式的讲解、面向对象的设计原则和代码重构。 第一部分讲解了JavaScript语言的面向对象和函数式编程的知识,包括静态类型语言和动态类型...
设计模式和异步编程是提升JavaScript代码质量和效率的关键。以下将详细介绍这三本书所涵盖的知识点: 1. **JavaScript设计模式**: 设计模式是软件工程中经过实践验证的、解决常见问题的有效方法。在JavaScript中...
书中不仅介绍了JavaScript中经典和现代的设计模式,还包括了针对不同JavaScript开发框架(如MVC、MVP、MVVM)的设计模式,以及最新的模块化JavaScript设计模式(AMD、CommonJS、ES Harmony)和jQuery中的设计模式。...
在深入探讨《Javascript 设计模式》这本电子书之前,需要先理解设计模式的含义及其在软件开发中的重要性。设计模式是软件工程领域中经过时间验证的一套最佳实践和解决方案,它们针对特定问题提供了模板化设计方案。...
JavaScript设计模式是编程实践中一种重要的思想,它通过总结和提炼出一套可复用的解决方案,帮助开发者解决在软件开发过程中遇到的常见问题。设计模式并不是特定的语言特性,而是跨越多种编程语言的一般性原则和最佳...
为了让每一章中的示例都尽可能地贴近实际应用,书中同时列举了一些JavaScript程序员最常见的任务,然后运用设计模式使其解决方案变得更模块化、更高效并且更易维护,其中较为理论化的例子则用于阐明某些要点。...
根据提供的标题和描述“JavaScript 设计模式.pdf 高清下载”,我们可以推断这份文档主要讨论的是JavaScript中的设计模式。设计模式是一种在特定情况下解决常见问题的标准化方法,它可以帮助开发者编写更加灵活、可...
JavaScript设计模式是由张容铭编著的一本关于JavaScript编程领域的重要参考书籍,主要探讨了如何在JavaScript编程中应用设计模式来提升代码质量和可维护性。设计模式是软件工程中的最佳实践,它们是针对常见问题的...
创建型设计模式如单例模式、工厂模式、建造者模式等,关注对象的创建过程,确保在程序中只存在一个实例或者提供一个创建对象的接口。结构型模式如代理模式、装饰器模式、适配器模式等,关注如何组合和连接类与对象,...
在这个"JavaScript高级与设计模式"的主题中,我们将深入探讨JavaScript的高级特性以及如何在实践中应用设计模式。 首先,让我们关注JavaScript的高级特性。这些特性包括但不限于: 1. **闭包(Closures)**:闭包...
JavaScript设计模式的学习与应用,对于开发者来说,不仅是一种技术上的提升,更是对软件设计思想的深化理解。通过不断地实践,开发者能够更好地理解如何构建高质量的软件,从而在软件开发过程中做出更加明智的决策。
全书分为三个部分,涵盖了JavaScript面向对象、函数式编程、设计模式及其实践、面向对象的设计原则等多个重要主题。 第一部分主要讲解JavaScript的基础知识,包括静态类型语言和动态类型语言的区别,以及它们在实现...
JavaScript 设计模式之接口 在软件开发中,接口是一个非常重要的概念,它提供了一个契约,指定了对象必须实现的一组方法。JavaScript 作为一门弱类型语言,并没有内建的接口支持,但是这并不意味着我们不能在 ...
GOF 23设计模式,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位大师在1994年提出的,包含了23种经典的设计模式,这些模式可以分为三类:创建型、结构型和行为型。 1. 创建型模式: - 单例模式...
### JavaScript 设计模式知识点梳理 #### 1. JavaScript语言概述 JavaScript是目前应用最广泛的编程语言之一,几乎所有的现代浏览器都内置了解释器。它在我们的日常生活中扮演着重要角色,支持着各种网站的界面和...
在实际问题解决方面,书中的实例可能涵盖数据处理(如排序、过滤、映射等数组方法)、算法实现(如搜索、排序算法)、游戏开发、动画制作、API接口调用、网络请求优化等多个领域,这些都是提升JavaScript实战能力的...
设计模式是软件工程中的一种最佳实践,它是在特定上下文中解决常见问题的模板,可以被重复使用,以创建高效、可维护的代码。在JavaScript中,尽管它是一种动态类型的脚本语言,但同样可以从设计模式中受益。在这个...