下面是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设计模式.pdf JavaScript设计模式是指在软件开发中使用JavaScript语言编写的设计模式。这些设计模式旨在提高代码的重用性、可读性、维护性和扩展性。以下是JavaScript设计模式的知识点总结: 1. 单体...
设计模式和异步编程是提升JavaScript代码质量和效率的关键。以下将详细介绍这三本书所涵盖的知识点: 1. **JavaScript设计模式**: 设计模式是软件工程中经过实践验证的、解决常见问题的有效方法。在JavaScript中...
在吃透了前面所说的书之后,接下来两本书的顺序已经无关紧要了,《JavaScript DOM高级程序设计》(注意和《JavaScript 高级程序设计》相区别)和《JavaScript设计模式》,这两本都是重量级的书,能让你的JS技术上一...
书中不仅介绍了JavaScript中经典和现代的设计模式,还包括了针对不同JavaScript开发框架(如MVC、MVP、MVVM)的设计模式,以及最新的模块化JavaScript设计模式(AMD、CommonJS、ES Harmony)和jQuery中的设计模式。...
在深入探讨《Javascript 设计模式》这本电子书之前,需要先理解设计模式的含义及其在软件开发中的重要性。设计模式是软件工程领域中经过时间验证的一套最佳实践和解决方案,它们针对特定问题提供了模板化设计方案。...
JavaScript设计模式是编程实践中一种重要的思想,它通过总结和提炼出一套可复用的解决方案,帮助开发者解决在软件开发过程中遇到的常见问题。设计模式并不是特定的语言特性,而是跨越多种编程语言的一般性原则和最佳...
为了帮助大家快速和较好地理解JavaScript设计模式中的单例模式,本文对JavaScript的单例模式进行了分析并进行简易的代码演示,希望本文能够给有需要的人带来一点小小的帮助。
为了让每一章中的示例都尽可能地贴近实际应用,书中同时列举了一些JavaScript程序员最常见的任务,然后运用设计模式使其解决方案变得更模块化、更高效并且更易维护,其中较为理论化的例子则用于阐明某些要点。...
创建型设计模式如单例模式、工厂模式、建造者模式等,关注对象的创建过程,确保在程序中只存在一个实例或者提供一个创建对象的接口。结构型模式如代理模式、装饰器模式、适配器模式等,关注如何组合和连接类与对象,...
在这个"JavaScript高级与设计模式"的主题中,我们将深入探讨JavaScript的高级特性以及如何在实践中应用设计模式。 首先,让我们关注JavaScript的高级特性。这些特性包括但不限于: 1. **闭包(Closures)**:闭包...
JavaScript设计模式的学习与应用,对于开发者来说,不仅是一种技术上的提升,更是对软件设计思想的深化理解。通过不断地实践,开发者能够更好地理解如何构建高质量的软件,从而在软件开发过程中做出更加明智的决策。
javascript设计模式 哈梅斯 (Ross harmes) (作者), 迪亚斯 (Dustin Diaz) (作者), 谢廷晟 (译者) 整书源码
全书分为三个部分,涵盖了JavaScript面向对象、函数式编程、设计模式及其实践、面向对象的设计原则等多个重要主题。 第一部分主要讲解JavaScript的基础知识,包括静态类型语言和动态类型语言的区别,以及它们在实现...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在JavaScript中,这种模式尤其有用,因为JavaScript是动态类型的,允许我们在程序运行时轻松地更改对象的属性和行为。下面我们将深入探讨策略模式的...
JavaScript 设计模式之接口 在软件开发中,接口是一个非常重要的概念,它提供了一个契约,指定了对象必须实现的一组方法。JavaScript 作为一门弱类型语言,并没有内建的接口支持,但是这并不意味着我们不能在 ...
### 常用的Javascript设计模式 #### 一、单例模式详解 单例模式是一种常用的软件设计模式,它的核心思想在于确保一个类只有一个实例,并提供一个全局访问点。这在许多场景中都非常有用,例如当希望在整个应用程序...
JavaScript设计模式是编程实践中一种优秀的经验总结,它旨在提高代码的可读性、可维护性和复用性。面向对象编程是JavaScript实现设计模式的基础,它包括类、对象、继承等核心概念。在这个中文版的资源中,我们有望...