博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript设计模式2
阅读量:5018 次
发布时间:2019-06-12

本文共 1771 字,大约阅读时间需要 5 分钟。

接口:利 固化一部分代码 弊 丧失js的灵活性

在JavaScript中模仿接口

/*interface Composite{    function add(child);    function remove(child);    function getChild(index);}interface FormItem{    function save();}*/var CompositeForm=function(id,method,action){    ...};CompositeForm.prototype.add = function(child) {    ...};CompositeForm.prototype.remove = function(child) {    ...};CompositeForm.prototype.getChild = function(index) {    ...};CompositeForm.prototype.save = function() {    ...};

改进一下,用属性检查

/*interface Composite{    function add(child);    function remove(child);    function getChild(index);}interface FormItem{    function save();}*/var CompositeForm=function(id,method,action){    this.implementsInterfaces=['Composite','FormItem'];    ...};...function addForm(formInstance){    if (!implements(formInstance,'Composite','FormItem')) {        throw new Error("Object does not implement a required interface.");    }    ...}function implements(Object){    for(var i=1;i

用鸭式辨型模仿接口

var Composite =new Interface('Composite',['add','remove','getChild']);var FormItem=new Interface('FormItem',['save']);var CompositeForm=function(id,method,action){    ...};...function addForm(formInstance){    ensureImplements(formInstance,Composite,FormItem);    ...}

结合第一种和第三种

 

var Composite =new Interface('Composite',['add','remove','getChild']);var FormItem=new Interface('FormItem',['save']);var CompositeForm=function(id,method,action){    ...};...function addForm(formInstance){    Interface.ensureImplements(formInstance,Composite,FormItem);    ...}

Interface类的定义

var Interface=function(name,method){    if(arguments.length!=2){        throw new Error("需要2个参数");    }    this.name=name;    this.method=[];    for(var i=0,len=methods.length;i

 

转载于:https://www.cnblogs.com/sdgjytu/p/4201472.html

你可能感兴趣的文章
HTML5 表单元素和属性
查看>>
SDUTOJ 2498 数据结构实验之图论十一:AOE网上的关键路径
查看>>
使用SpringSocial开发QQ登录
查看>>
好玩的游戏
查看>>
2.6. Statistical Models, Supervised Learning and Function Approximation
查看>>
代码说明call和apply方法的区别 (咱们这方面讲解的少,这样的题有变式,需要举例讲解一下)...
查看>>
T-SQL 类型转换
查看>>
在eclipse中设计BPMN 2.0工作流定义的根本步骤
查看>>
Json对象与Json字符串互转(4种转换方式)
查看>>
PAT甲级1002 链表实现方法
查看>>
查看Linux信息
查看>>
Python中sys模块sys.argv取值并判断
查看>>
【详记MySql问题大全集】四、设置MySql大小写敏感(踩坑血泪史)
查看>>
并查集
查看>>
ubuntu 11.04下android开发环境的搭建!
查看>>
Bzoj 3343: 教主的魔法
查看>>
括号序列(栈)
查看>>
一件趣事
查看>>
DevExpress控件TExtLookupComboBox实现多列模糊匹配输入的方法
查看>>
atom 调用g++编译cpp文件
查看>>