最近在看 <Javascipt Design Patterns> ,虽说纯english版的看起来有点费劲伤神,但还勉强的吸取了一点知识。精神上告诉我不能太心胸狭隘,所以拿出来一点点分享吧。另一方面也弥补我最近一直都没有写博。
我的计划是,一步步来将这个javascript设计模式汲取并且拿出来分享。那么我们的第一站,从javascript的接口讲起。
我们的服务端代码以Java语言举例,正好,这个语言与我们的javascript语言还有历史渊源。通常java语言的接口定义应该是这样滴:
public interface MyInterface{
String A();
void B();
int C();
}
//implements the interface MyInterface
public class MyClass implements MyInterface{
public String A(){...}
public void B(){....}
public int C(){....}
}
那我们的javascript中间如何来写接口呢?其实javascript中原本是没有接口的概念的。不过我们不要有这么“死”的想法,我们的脑子是灵活的,javascript语言也是灵活的。当初我们学c++的时候也没听说有接口啊。那么接口是什么呢?
在面向对象语言中,我们有了封装,怎样封装一个对象,那么需要封装属性和封装方法。这些方法往往代表着许多类似对象特有的方法。所以衍生出接口。其实简单 :接口就是共有的方法定义。
其实方法本省类似一个没有属性,只有方法的对象。所以我们建立javascript接口要从这一点出发。现在我们应该有一些思路:我们需要建立一个Interface对象,然后我们在定义接口方法。最后我们会用实例对象实现这些接口。
1. 定义Interface对象 : var Interface = function(){....}
2. 定义接口方法(只有方法名,没有方法体怎么实现呢?),这样 在Interface中定义Methods数组来保存这些接口方法名称。 var Interface = function(name,methods){
this.name = name;
this.methods =[];
.......
}
3. 找个实例对象来实现接口,这javascript中不可能去实际的实现接口,只能这么做,规定了接口这样一个标准的方法系列。你每一个形态意识上实现他接口类都必须实现他的那些方法名称,即方法名称必须和接口一致。那么要使这样的工作严格起来,我们还有最后一件事要做。
4.接口方法的实现验证。即验证对象的方法名有没有把接口中的方法名都实现。这里我们会给Interface一个ensureImplements 方法,施行验证。
好了,现在开始抄代码:
//Constructor.
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("接口方法的名称必须是一个字符串“);
}
this.methods.push(methods[i]);
}
};
//Static class Method
Interface.ensureImplements = function(object){
if(arguments.length<2){
throw new Error("方法 Interface.ensureImplemnents 指定了" + arguments.length+ "个参数,但是期望的是2个 .");
}
for(var i=1,len = arguments.length; i<len; i++){
var _interface = arguments[i];
if(_interface.constructor !== Interface){
throw new Error("方法 Interface.ensureImplements 期望两个或两个以上实例对象参数");
}
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 myInterface = new Interface('myInterface',['methodA','methodB','methodC']);
//这里的myInterface 是接口名称,methodA~methodC 就是定义的接口
Next~~ 我们来实现接口~~
/**
* design interface
*/
var MyInterface = new Interface('MyInterface',['A','B','C']);
/**
* implements the methods of the interface
*/
var MyObject = function(name){
this.name = name;
}
MyObject.prototype.A = function(){
alert('A');
}
MyObject.prototype.B = function(){
alert('B');
}
MyObject.prototype.C = function(){
alert('C');
}
MyObject.prototype.D = function(){
alert('another method D');
}
window.onload = function(){
var myObj = new MyObject('jgx');
Interface.ensureImplements(myObj,MyInterface);
myObj.D();
}
把这些放入网页中试试
<html>
<head>
<title>test</title>
<script type="text/javascript" src="Interface.js"></script>
<script type="text/javascript" src="implements.js"></script>
</head>
<body></body>
</html>
ok ~~~我该休息了~~
结束语:
我一定还会回来的~~
分享到:
相关推荐
JavaScript设计模式.pdf JavaScript设计模式是指在软件开发中使用JavaScript语言编写的设计模式。这些设计模式旨在提高代码的重用性、可读性、维护性和扩展性。以下是JavaScript设计模式的知识点总结: 1. 单体...
设计模式和异步编程是提升JavaScript代码质量和效率的关键。以下将详细介绍这三本书所涵盖的知识点: 1. **JavaScript设计模式**: 设计模式是软件工程中经过实践验证的、解决常见问题的有效方法。在JavaScript中...
JavaScript设计模式是由张容铭编著的一本关于JavaScript编程领域的重要参考书籍,主要探讨了如何在JavaScript编程中应用设计模式来提升代码质量和可维护性。设计模式是软件工程中的最佳实践,它们是针对常见问题的...
书中不仅介绍了JavaScript中经典和现代的设计模式,还包括了针对不同JavaScript开发框架(如MVC、MVP、MVVM)的设计模式,以及最新的模块化JavaScript设计模式(AMD、CommonJS、ES Harmony)和jQuery中的设计模式。...
在深入探讨《Javascript 设计模式》这本电子书之前,需要先理解设计模式的含义及其在软件开发中的重要性。设计模式是软件工程领域中经过时间验证的一套最佳实践和解决方案,它们针对特定问题提供了模板化设计方案。...
JavaScript 设计模式概述 JavaScript 设计模式是一个非常重要的概念,在前端开发中,掌握设计模式可以提高开发效率和代码质量。本文将对 JavaScript 设计模式进行总体介绍,并对闭包、封装等重要概念进行详细讲解。...
作者针对常见的开发任务,从YUI等实战代码中取材,提供了专家级的解决方案,不仅透彻剖析了JavaScript扣的面向对象编程,而且深入探讨了如何用JavaScript实现以前只在服务器端应用的设计模式,如何根据实际场景选择...
### 外文翻译:学用JavaScript设计模式 #### 序言与重要性 设计模式作为软件工程中的一个重要组成部分,其核心在于提供了一套标准的方法论,帮助开发人员以优雅、高效的方式解决常见的软件设计问题。《学用...
第一部分给出了实现具体设计模式所需要的面向对象特性的基础知识,主要包括接口、封装和信息隐藏、继承、单体模式等内容。第二部分则专注于各种具体的设计模式及其在JavaScript语言中的应用,主要介绍了工厂模式、...
在深入探讨《JavaScript设计模式系统讲解与应用》的内容之前,我们先来了解一下设计模式的基本概念以及为什么它对于前端开发人员尤为重要。设计模式是一套被反复使用的、经过分类编目的、包含结构化的解决方案,用于...
JavaScript设计模式主要分为创建型、结构型和行为型三大类。创建型设计模式如单例模式、工厂模式、建造者模式等,关注对象的创建过程,确保在程序中只存在一个实例或者提供一个创建对象的接口。结构型模式如代理模式...
javascript设计模式 哈梅斯 (Ross harmes) (作者), 迪亚斯 (Dustin Diaz) (作者), 谢廷晟 (译者) 整书源码
JavaScript设计模式中的接口是软件开发中的一个重要概念,它在面向对象编程中起到规范和约定的作用。在强类型语言中,接口通常由语言本身提供支持,但在JavaScript这种动态类型的脚本语言中,没有内置的接口机制。...
javascript高级-javascript设计模式。视频文件(无加密可在线观看)
Javascript 设计模式系统讲解与应用视频资源地址.txt
工厂模式是一种创建型设计模式,它定义了一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法把实例化操作推迟到子类中进行。 #### 3. 观察者模式(Observer) 观察者模式是一种对象行为型设计模式。它...
2. 适配器模式:将一个类的接口转换成客户期望的另一个接口,使原本接口不兼容的类可以一起工作。 3. 迭代器模式:提供了一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。 4. 惰性初始...