JavaScript设计模式之一Interface接口

什么是接口?

接口提供了一种用以说明一个对象应该具有哪些方法和手段。

在面向对象的javascript中,接口有些什么作用呢?既定的一批接口具有自我描述性,并能促进代码重用。接口可以告诉程序员一个类实现了哪些方法,从而帮助其使用这个类。

在C#还是JAVA中都应该面向接口设计我们的程序,在C#和Java中都Interface这样的关键字,但是JavaScript中没有相应的机制,但是Javascript很灵活,我们可以用它的特性去模仿Interface。

使用 Interface.js

var Interface = function(name, methods) {
    if(arguments.length != 2) {
        throw new Error("请确认要检查的接口所传的参数是否正确,例如:var Person = new Interface(‘Person‘, [‘GetName‘,‘GetAge‘]);");
    }
    if(methods.length == 0){
        throw new Error("要检查的接口的方法名不能为空");
    }
    this.Name = name;
    this.Method = [];
    for(var i = 0; i < methods.length; i++) {
        if(typeof methods[i] !== ‘string‘) {
            throw new Error("方法名不是字符串");
        }
        this.Method.push(methods[i]);
    }
}
/*static method in interface*/
Interface.ensureImplement = function(object) {
    if(arguments.length < 2) {
        throw new Error("没有接口或实例");
    }

    for(var i = 1; i < arguments.length; i++) {
        var interface1 = arguments[i];
        if(interface1.constructor !== Interface) {
            throw new Error("参数不是接口");
        }
        for(var j = 0; j < interface1.Method.length; j++) {
            var method = interface1.Method[j];
            if(!object[method] || typeof object[method] !== ‘function‘) {
                throw new Error("您的实例没有实现接口:\t" + method);
            }
        }
    }
}

案例:

// 封装接口的类,假如该类中实现的  add del 2个方法
function Peson(){}
Peson.prototype.add = function(){
    console.log(‘新增接口‘);
}
Peson.prototype.del = function(){
    console.log(‘删除接口‘);
}

//在你使用该类的方法的时候先去检查你要用到的方法是否存在
var peson = new Peson();
//Interfaces
var check = new Interface(‘check‘,[‘add‘, ‘del‘]);
//检查你要用到的方法是否存在,如果你要用的方法没有实现,会抛出错误提示
Interface.ensureImplement(peson, check);
//使用接口
peson.add();
peson.del();

使用es6 的class 也是可以的

class Peson{
    add(){
        console.log(‘新增接口‘);
    }
    del(){
        console.log(‘删除接口‘);
    }
}
//在你使用该类的方法的时候先去检查你要用到的方法是否存在
var peson = new Peson();
//Interfaces
var check = new Interface(‘check‘,[‘add‘, ‘del‘]);
//检查你要用到的方法是否存在,如果你要用的方法没有实现,会抛出错误提示
Interface.ensureImplement(peson, check);
//使用接口
peson.add();
peson.del();

原文地址:https://www.cnblogs.com/bruce-gou/p/10411449.html

时间: 2024-08-05 12:49:32

JavaScript设计模式之一Interface接口的相关文章

重读《JavaScript设计模式》- 接口

接口 和Class一样,JavaScript也没有对接口的原生支持. 下面是书中三种实现接口的方式:   提示 实际环境中我们会对书中的方案进行取舍 注释 注释法用文档来约束代码,不是强制约束,只能靠开发人员自觉维护. 优点是不用额外代码支持,不会增大文件大小,不会影响执行速度. 缺点是无法提供检查,错误信息. # interface Composite # add(child) # remove(child) # getChild(index) # # interface FormItem #

JavaScript设计模式之----接口的实现

1.接口 (1)什么是接口? 接口是提供了一种用以说明一个对象应该具有哪些方法的手段.尽管它可以表明这些方法的语义,但它并不规定这些方法应该如何实现.例如,如果一个接口包含有一个名为setName的方法,那么你有理由认为这个方法的实现应该具有一个字符串参数,并且会把这个参数赋给一个name变量.有了这个工具,你就能按对象提供的特性对它们进行分组.例如,即使一批对象彼此存在着极大的差异,只要它们都实现了Comparable接口,那么在object.compare(anotherObject)方法中

模式(一)javascript设计模式

模式有三种:Architectural Pattern.Design Pattern.Coding Pattern,即:框架模式.设计模式.编程模式.本文主要讲解javascript中的设计模式,好的设计模式能够提高代码的重用性,可读性,使代码更容易的维护和扩展.本文适合有一点javascript基础,对javascript的概念有所了解. 一.单例模式: 单例模式是javascript中最常用的模式,它是将自己的代码放在一个命名空间下,这样的好处是可以减少使用全局变量,在多人协同开发时也能避免

Javascript设计模式(1)

本文是学习了<JavaScript设计模式>(谢廷晟 译)做的学习笔记 一.JavaScript的灵活性 1. 普通 functon function startAnimation() {...} function stopAnimation() {...} 2. 类 var Anim = function() {} #构造函数 # 方式一 Anim.prototype.start = function() {...} Anim.prototype.stop = function() {...

21种JavaScript设计模式最新记录(含图和示例)

最近观看了<Javascript设计模式系统讲解与应用>教程,对设计模式有了新的认识,特在此做些记录. 一.UML 文中会涉及众多的UML类图,在开篇需要做点基础概念的认识.以下面的图为例,图片和说明均来源于<大话设计模式>一书. (1)矩形框,它代表一个类.类图分三层,第一层显示类的名称,如果是抽象类,则用斜体显示.第二层是类的特性,通常就是字段和属性.第三层是类的操作,通常是方法或行为.前面的符号,+ 表示public,- 表示private,# 表示protected. (2

javascript设计模式详解之命令模式

每种设计模式的出现都是为了弥补语言在某方面的不足,解决特定环境下的问题.思想是相通的.只不过不同的设计语言有其特定的实现.对javascript这种动态语言来说,弱类型的特性,与生俱来的多态性,导致某些设计模式不自觉的我们都在使用.只不过没有对应起来罢了.本文就力求以精简的语言去介绍下设计模式这个高大上的概念.相信会在看完某个设计模式之后有原来如此的感慨. 一.基本概念与使用场景: 基本概念: 将请求封装成对象,分离命令接受者和发起者之间的耦合. 命令执行之前在执行对象中传入接受者.主要目的相互

javascript设计模式

javascript设计模式 阅读目录 什么是设计模式 单体模式: 工厂模式: 单例模式 观察者模式(发布订阅模式) 策略模式 模板模式 代理模式 外观模式 设计模式太多了,貌似有23种,其实我们在平时的工作中没有必要特意去用什么样的设计模式,或者你在不经意间就已经用了设计模式当中的一种.本文旨在总结平时相对来说用的比较多的设计模式. 回到顶部 什么是设计模式 百度百科: 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结. 使用设计模式是

【读书笔记】读《JavaScript设计模式》之观察者模式

一.定义 在事件驱动的环境中,比如浏览器这种持续寻求用户关注的环境中,观察者模式(又名发布者-订阅者(publisher-subscripber)模式)是一种管理人与其任务之间的关系(确切地讲,是对象及其行为和状态之间的关系)的得力工具.用JavaScript的话来说,这种模式的实质就是你可以对程序中某个对象的状态进行观察,并且在其发生改变时能够得到通知. 二.例子 我们需要一个发布者的构造函数,它为该实例定义了一个类型为数组的属性,用来保存订阅者的引用. function Publisher(

《JavaScript设计模式 张》整理

最近在研读另外一本关于设计模式的书<JavaScript设计模式>,这本书中描述了更多的设计模式. 一.创建型设计模式 包括简单工厂.工厂方法.抽象工厂.建造者.原型和单例模式. 1)简单工厂 又叫静态工厂方法,由一个工厂对象决定创建某一种产品对象类的实例. 两种实现方式,第一种是通过类实例化对象创建,第二种是创建一个新对象然后包装增强其属性和功能. demo代码. 2)工厂方法 通过对产品类的抽象使其创建业务主要负责用于创建多类产品的实例. 将工厂方法看作是一个实例化对象的工厂类. demo