文档章节

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设计模式之观察者模式

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

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

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

小钱钱阿圣
2017/09/22
0
0
JavaScript 中常见设计模式-单例模式

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

webstack前端栈
05/19
0
0
你需要了解的23种JavaScript设计模式

为什么要学习设计模式? 在许多访谈中,你可能会遇到很多面向对象编程中的接口,抽象类,代理和以及其他与设计模式相关的问题。 一旦了解了设计模式,它会让你轻松应对任何访谈,并可以在你的...

java高级架构牛人
06/02
0
0
js策略模式《JavaScript设计模式与开发实践》阅读笔记

策略模式的定义是:定义一系列的算法,把它们一个个封装起来,并且是它们可以相互替换。 策略模式可以避免代码中的多重判断条件。 策略模式很好的体现了开放-封闭原则,将一个个算法(解决方...

RoyLuo
05/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Sqoop 操作实例补充

导入指定字段和指定条件的行记录 # 指定导入的字段--columns <col,col,col…># 指定过滤条件--where <where clause># 设置切分的工作单元--split-by <column-name># 目标目录存在...

PeakFang-BOK
16分钟前
1
0
App store 侵权投诉

App Store Content Dispute 侵权投诉 https://www.apple.com/legal/internet-services/itunes/appstorenotices/#?lang=zh...

壹峰
19分钟前
0
0
教程:如何在window上安装Apache HTTP Server

Apache官网只提供 Apache HTTP Server 的源代码,不提供编译好的二进制文件。 不过我们还是可以从网络上找到其他人编译好的Apache HTTP Server。 首先,从 https://www.apachehaus.com/cgi-b...

Doxde
35分钟前
0
0
中国移动蔡谦:5G传输准备就绪

目前5G已成业界热议话题,在即将到来的万物互联时代,5G是非常关键的技术。且5G相比4G,业务场景多种多样,对5G承载网带来巨大挑战。5G传输,承载先行并不仅仅是一个口号。当前5G承载网的部署...

linux-tao
44分钟前
4
0
维护“修理权”,苹果使用专有软件工具来修复MacBook Pro和iMac Pro

根据上月发给苹果授权服务提供商的一份文件,苹果公司正在使用新的专有软件诊断工具来修复MacBook Pros和iMac Pros,如果不用专有软件工具来修复关键部件,将会导致“系统失效和修复不完整”...

linuxCool
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部