一.迭代器模式定义 迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,并且不需要暴露该对象的内部表示. 在当前大部分语言中,都已经内置了迭代器模式.迭代器有内部迭代器和外部迭代器之分,一般现有语言中实现的大多是内部迭代器. 二.jquery中的each实现 对于数组采用数字下标访问,防止原型链上其他非数值属性的干扰. //类似jquery中的each迭代器 $.each=function(obj,callback){ var value, i=, isArray=isArrayLike(o…
  设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型) 1.概述 类中的面向对象编程封装应用逻辑.类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态.单独的对象是一种组织代码的有用方法,但通常你会处理一组对象或者集合. 集合不一定是均一的.图形用户界面框架中的 Window 对象可以收集任意数量的控制对象 - Menu.Slider 和 Button.并且,集合的实现可以有多种方式:PHP 数字是一个集合,但也是一个散列表,一个链接列表,一个堆栈以及队列. 例子1:电视遥…
<JavaScript设计模式与开发实践>读书笔记. 发布-订阅模式又叫观察者模式,它定义了对象之间的一种一对多的依赖关系.当一个对象的状态发生改变时,所有依赖它的对象都将得到通知. 例如:在segmentfault我们关注了某一个问题,这个时候可以说是订阅了这个问题的消息.当该问题有了新的回答.评论的时候,segmentfault系统就会遍历关注了这个问题的用户,一次给用户发消息. 现在看看如何一步步实现发布-订阅模式. 首先,指定好发布者(如 segmentfault 的 问题系统) 接着…
迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示. 爆炸性新闻:对象村餐厅和对象村煎饼屋合并了! 真是个好消息!现在我们可以在同一个地方,享用煎饼屋美味的煎饼早餐,和好吃的餐厅午餐了.但是,好像有一点小麻烦: 新的餐厅想用煎饼屋菜单当作早餐的菜单,使用餐厅的菜单当做午餐的菜单,大家都同意了这样实现菜单项.但是大家无法同意菜单的实现.煎饼屋使用ArrayList记录他的菜单项,而餐厅使用的是数组.他们两个都不愿意改变他们的实现,毕竟有太多代码依赖于它们了. 检查菜单项…
javascript策略模式总结 1.什么是策略模式? 策略模式的定义是:定义一系列的算法,把他们独立封装起来,并且可以相互替换. 例如我们需要写一段代码来计算员工的奖金.当绩效为a时,奖金为工资的5倍,绩效为b时,奖金为工资的3倍,绩效为c时,奖金为工资的1.5倍: var strategy = { "a":function(salary){ return salary*5; }, "b":function(salary){ return salary*3; },…
JavaScript 设计模式: 发布者-订阅者模式 发布者-订阅者模式 https://github.com/Kelichao/javascript.basics/issues/22 https://github.com/Kelichao/javascript.basics/issues/67 http://www.alloyteam.com/2012/10/commonly-javascript-design-pattern-observer-mode/ https://github.com…
大家好!本文介绍迭代器模式及其在Javascript中的应用. 模式介绍 定义 提供一种方法顺序一个聚合对象中各个元素,而又不暴露该对象内部表示. 类图及说明 Iterator抽象迭代器 抽象迭代器负责定义访问和遍历元素的接口,而且基本上是有固定的3个方法:first()获得第一个元素,next()访问下一个元素,isDone()(或者为hasNext())是否已经访问到底部 ConcreIterator具体迭代器 具体迭代器角色要实现迭代器接口,完成容器元素的遍历. Aggregate抽象容器…
大家好!本文介绍状态模式及其在Javascript中的应用. 模式介绍 定义 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类. 状态模式主要解决的是控制一个对象状态的条件表达式过于复杂时的情况.把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化. 类图及说明 State:抽象状态 接口或抽象类,负责对象状态定义,并且封装环境角色以实现状态切换 ConcreState:具体状态 每一个具体状态必须完成两个职责:本状态的行为管理以及趋向状态处理.通俗地说…
类似于幻灯片的切换效果,有时需要在网页中完成一些图片的自动切换效果,比如广告,宣传,产品介绍之类的,那么单纯的切就没意思了,需要在切换的时候通过一些效果使得切换生动些. 比较常用之一的就是窗帘切换了. 先贴上完成的效果. 实现原理不复杂,在动的一条一条的称之为“窗帘条”或者是“strip”,每一个strip都是一个div,类似于雪碧图的方式将其背景图的位置设置为strip的可视位置,然后用jquery的animate让他们按照一定规律动起来就完成窗帘切换效果了. 为了使用方便,将这个功能作为jq…
一.定义 代理是一个对象,它可以用来控制对另一个对象的访问.它与另外那个对象实现了同样的接口,并且会把任何方法调用传递给那个对象.另外那个对象通常称为本体.代理可以代替其实体被实例化,并使其可被远程访问.它还可以把本体的实例化推迟到真正需要的时候,对于实例化比较费时的本体,或者因尺寸较大以至于不用时不易保存在内存中的本体,这特别有用.在处理那些需要较长时间才能把数据载入用户界面的类时,代理也大有裨益. 代理模式最基本的形式是对访问进行控制.代理对象和另一个对象(本体)实现的是同样的接口.实际上工…