文档章节

JavaScript设计模式学习

iPhone
 iPhone
发布于 2015/04/08 13:40
字数 348
阅读 16
收藏 0

JavaScript设计模式之接口是实现的三种方式之一

// 用注释描述接口interface.js
/*
在这里定义两个接口,内部是接口要实现的方法,当然这样的语法在JS下是无法执行的,所以把注释,下同
interface Composite{
	function add(child);
	function remove(child);
	function getChild(index);
}

interface FormItem{
	function save();
}
*/

//这里定义一个实现类(function),既该方法要实现接口定义的方法,这里把这些方法定义在prototype里
var CompositeForm=function(id,data){
	this.id=id;
	this.data=data
}

var findchild=function (_array,child) {
	for(var i=0;i<_array.length;i++){
		if(_array[i]===child)
			return i;
	}
	return null;
}

CompositeForm.prototype.add=function(child){
	this.data.push(child);
	return this.data;
}
CompositeForm.prototype.remove=function(child){
	var index=findchild(this.data,child)
	if(index){
		this.data.splice(index,1);
	}
    return this.data;
}
CompositeForm.prototype.getChild=function(index){
	return this.data[index];
}
CompositeForm.prototype.save=function(){
	console.log("save");
}

function log(str){
	console.log(str);
}
//测试
var form=new CompositeForm(1,[1,'hello','world',{asd:"123"}]);
log(form.add('hello'));
log(form.data);
log(form.remove("world"));
log(form.data);
log(form.getChild(2));
form.save();
// log(form.findchild('hello'))

html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="interface.js"></script>
</head>
<body>
</body>
</html>

控制台输出结果


这种方式表面上看CompositeForm类(Function)实现的规定的接口方法,但是,这仅仅是作为文档(书面)的形式下完成的,全靠自觉,如果写错了或者漏了根本不会报错,没有相应的提示让它作为接口来说意义太小

© 著作权归作者所有

共有 人打赏支持
iPhone
粉丝 0
博文 7
码字总数 2946
作品 0
海口
私信 提问
JavaScript 中常见设计模式-单例模式

     单例模式两个条件   确保只有一个实例   可以全局访问   适用   适用于弹框的实现,全局缓存   实现单例模式      JavaScript 中的单例模式   因为 JavaScript 是无...

webstack前端栈
05/19
0
0
Javascript设计模式与开发实践详见(一:单例模式)

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设...

littl_Prince
2016/04/05
0
0
《JavaScript设计模式与开发实践》模式篇(6)—— 命令模式

命令模式是最简单和优雅的模式之一,命令模式中的命令(command)指的是一个执行某些特定事情的指令。 应用场景 有时候需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求...

嗨呀豆豆呢
前天
0
0
JavaScript设计模式之观察者模式

前言 准备研究一下MVVM的一些东西,由于MVVM运用了观察者模式的思想,因此翻开了《JavaScript设计模式与开发实践》一书,将观察者模式学习了一遍,顺便有对一些常用的设计模式进行一些了解,...

Srtian
05/22
0
0
JavaScript设计模式系列三之单例模式(附案例源码)

文章初衷 设计模式其实旨在解决语言本身存在的缺陷 目前javaScript一些新的语法特性已经集成了一些设计模式的实现, 大家在写代码的时候,没必要为了用设计模式而去用设计模式, 那么我这边为什...

小钱钱阿圣
2017/09/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

/etc/profile和/etc/profile.d/的区别

/etc/profile 是文件, /etc/profile.d/ 是目录,用在设置环境变量方面,/etc/profile 文件和 /etc/profile.d/ 目录实现效果是一样的,可根据自己对环境变量配置的需求场景,选择一种最好的方...

calmsnow
13分钟前
2
0
支付系统设计

概述 支付系统是连接消费者、商家(或平台)和金融机构的桥梁,管理支付数据,调用第三方支付平台接口,记录支付信息(对应订单号,支付金额等),金额对账等功能,根据不同公司对于支付业务...

小致dad
14分钟前
2
0
解决Docker Image镜像无法删除问题的方法

前言 Docker是Docker.Inc公司开源的一个基于轻量级虚拟化技术的容器引擎项目,整个项目基于Go语言开发,并遵从Apache 2.0协议。通过分层镜像标准化和内核虚拟化技术,Docker使得应用开发者和运...

临江仙卜算子
18分钟前
1
0
centos 7 redis_install.sh

#!/bin/bashprintf "============开始安装redis\n"printf "============输入redis下载url,按enter默认下载5.0.3版本\n"download_url='';while truedoread download_url...

偶遇一只小仙女
21分钟前
1
0
分布式消息通信ActiveMQ原理-消费消息策略-笔记

消费端消费消息的原理 我们通过上一节课的讲解,知道有两种方法可以接收消息, 一种是使用同步阻塞的MessageConsumer#receive方法。 另一种是使用消息监听器MessageListener。 这里需要注意的...

Java搬砖工程师
24分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部