`
topcss
  • 浏览: 100788 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
文章分类
社区版块
存档分类
最新评论

JAVASCRIPT设计模式书上讲的接口的定义,鸭式辩型法

 
阅读更多

下面是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设计模式.pdf JavaScript设计模式是指在软件开发中使用JavaScript语言编写的设计模式。这些设计模式旨在提高代码的重用性、可读性、维护性和扩展性。以下是JavaScript设计模式的知识点总结: 1. 单体...

    JavaScript设计模式+JavaScript模式+JavaScript异步编程

    设计模式和异步编程是提升JavaScript代码质量和效率的关键。以下将详细介绍这三本书所涵盖的知识点: 1. **JavaScript设计模式**: 设计模式是软件工程中经过实践验证的、解决常见问题的有效方法。在JavaScript中...

    学用JavaScript设计模式

    书中不仅介绍了JavaScript中经典和现代的设计模式,还包括了针对不同JavaScript开发框架(如MVC、MVP、MVVM)的设计模式,以及最新的模块化JavaScript设计模式(AMD、CommonJS、ES Harmony)和jQuery中的设计模式。...

    Javascript 设计模式 电子书

    在深入探讨《Javascript 设计模式》这本电子书之前,需要先理解设计模式的含义及其在软件开发中的重要性。设计模式是软件工程领域中经过时间验证的一套最佳实践和解决方案,它们针对特定问题提供了模板化设计方案。...

    Javascript 设计模式系统讲解与应用

    - **定义**:工厂模式是一种创建型模式,它提供了一个创建对象的接口,但允许子类决定实例化哪个类。 - **应用场景**:当程序中需要创建的对象很多,并且每个对象都需要手工实例化时,可以使用工厂模式。 - **实现...

    JavaScript设计模式 (美)哈梅斯(Harmes,R), (美)迪亚斯(Diaz,D)著 源码+PDF

    为了让每一章中的示例都尽可能地贴近实际应用,书中同时列举了一些JavaScript程序员最常见的任务,然后运用设计模式使其解决方案变得更模块化、更高效并且更易维护,其中较为理论化的例子则用于阐明某些要点。...

    JavaScript设计模式与开发实践_himppf_js_jspremise_精通javascript_Js设计模式_

    创建型设计模式如单例模式、工厂模式、建造者模式等,关注对象的创建过程,确保在程序中只存在一个实例或者提供一个创建对象的接口。结构型模式如代理模式、装饰器模式、适配器模式等,关注如何组合和连接类与对象,...

    学用 JavaScript 设计模式

    JavaScript设计模式的学习与应用,对于开发者来说,不仅是一种技术上的提升,更是对软件设计思想的深化理解。通过不断地实践,开发者能够更好地理解如何构建高质量的软件,从而在软件开发过程中做出更加明智的决策。

    javascript设计模式源码 谢廷晟译

    javascript设计模式 哈梅斯 (Ross harmes) (作者), 迪亚斯 (Dustin Diaz) (作者), 谢廷晟 (译者) 整书源码

    JavaScript设计模式与开发实践1

    全书分为三个部分,涵盖了JavaScript面向对象、函数式编程、设计模式及其实践、面向对象的设计原则等多个重要主题。 第一部分主要讲解JavaScript的基础知识,包括静态类型语言和动态类型语言的区别,以及它们在实现...

    JavaScript设计模式之接口.pdf

    JavaScript 设计模式之接口 在软件开发中,接口是一个非常重要的概念,它提供了一个契约,指定了对象必须实现的一组方法。JavaScript 作为一门弱类型语言,并没有内建的接口支持,但是这并不意味着我们不能在 ...

    常用的Javascript设计模式.pdf

    ### 常用的Javascript设计模式 #### 一、单例模式详解 单例模式是一种常用的软件设计模式,它的核心思想在于确保一个类只有一个实例,并提供一个全局访问点。这在许多场景中都非常有用,例如当希望在整个应用程序...

    Javascript 设计模式

    JavaScript设计模式是编程实践中一种优秀的经验总结,它旨在提高代码的可读性、可维护性和复用性。面向对象编程是JavaScript实现设计模式的基础,它包括类、对象、继承等核心概念。在这个中文版的资源中,我们有望...

    设计模式(包含java\c#\javascript等语言的设计模式)

    GOF 23设计模式,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位大师在1994年提出的,包含了23种经典的设计模式,这些模式可以分为三类:创建型、结构型和行为型。 1. 创建型模式: - 单例模式...

    avascript设计模式.pdf

    ### JavaScript 设计模式知识点梳理 #### 1. JavaScript语言概述 JavaScript是目前应用最广泛的编程语言之一,几乎所有的现代浏览器都内置了解释器。它在我们的日常生活中扮演着重要角色,支持着各种网站的界面和...

    详解JavaScript设计模式开发中的桥接模式用法_.docx

    理解 JavaScript 设计模式开发中的桥接模式用法 桥接模式是JavaScript设计模式中的一种重要模式,它将抽象部分与实现部分分离开,使两者可以独立地改变,并且可以一起和谐地工作。这种模式对于JavaScript中的大型...

    JavaScript模式

    - **定义**:工厂模式是一种创建型设计模式,提供了一个创建对象的接口,但允许子类决定实例化哪个类。 - **实现**: ```javascript function createAnimal(type) { switch (type) { case 'dog': return new ...

    几种js设计模式.rar

    JavaScript设计模式是编程实践中的一种标准解决方案,用于解决常见的软件设计问题。这些模式是经验丰富的开发者在反复试验和错误中总结出来的最佳实践,旨在提高代码的可读性、可维护性和可扩展性。在这个"js设计...

Global site tag (gtag.js) - Google Analytics