js设计模式(4)---组合模式
0.前言
今天是建党节,新疆那边又开始了闹腾。作为立志成为码农的我,现在已经从一个大愤青淡化为一个小愤青,对这些国家民生大事不在血气喷发,转而把经历发泄在技术问题上面,因而在扯一篇随笔吧,把无处发泄的精力挥洒出去。
1.组合模式的使用条件
主要用于解决WEB上的动态用户界面,使用这种模式,可以用一条命令在多个对象上激发复杂的或递归的行为。组合模式擅长对大批量对象进行操作。
换句话,组合模式的使用范围: 1、存在一批相似或相近的大量对象,而具体结构在开发初期无法知道具体结构;2.希望对这批对象进行同一个操作。
2.什么是组合模式
首先,对象可以呈现树形结构,单个对象(叶子对象)和组合对象具有一致性,说白了就是叶子对象和组合对象有相似的方法,通过遍历直接调用相同的方法,使用过jQuery的码农应该很清楚吧,例如$('.class1').onclick(...),你不管是什么元素,div、a也好,button也好,只要被匹配到,我都被其绑定点击事件,不过不能忽视的是该事件都具有click属性。同样组合对象就是让每一个对象(叶子对象、组合对象),都具有某些属性,例如add、remove等,这样就可以对其进行遍历了,就可以一次操作多个对象了。
代码是最好的语言,由于本人较懒,大家直接去看大叔的例子吧,不过我还是说下思路:1.首先定义接口(抽象类),组合对象的都要实现其方法,这样就可以遍历;2.组合对象实现接口;3.叶子节点实现接口。这样基础东西已经完成,接下来就可以进行组装。
3.利与弊
利: 1.可以用同样的方法处理多个对象;2.把一批子对象组织为树形结构,并且使整棵树都可以被遍历;3.简单操作也能产生复杂的效果
弊: 需要定义接口,代码变得复杂
4.个人理解
1.组合模式主要应用于动态页面,也就是在开发初期无法确定具体结构的页面,例如表单校验;
2.组合对象有叶对象和组合对象构成,能够形成树形结构,具有相同的方法,可以对其进行遍历;
3.使用:有大量的对象,且可以把这些对象组成树形结构;需要对这些对象进行同一处理;
4.如何:首先定义一个公共抽象类,接着组合对象、叶子节点继承这些抽象类,这样就形成了树形结构,最后就是组装。
最新文章
- python if
- 网络&;热恋NSURLConnection代理及GET¥POST请求
- net-snmp子代理(SubAgent)编写详述
- redis密码管理
- phpcms后台登陆验证码不显示的解决方法
- .net中清理内存,清理占用内存方式方法
- iis 管理员执行 aspnet_iis.exe
- 修改首页的main里面的内容
- 剑指OFFER之复杂链表的复制(九度OJ1524)
- 获取DLL的文件路径以及调用DLL的文件路径
- linux的grep命令
- HDU4681 String(dp)
- python functools.wraps装饰器模块
- DrawerLayout学习笔记
- RestSharp使用总结
- Luogu5283 十二省联考2019异或粽子(trie/可持久化trie+堆)
- 如何判断java对象是否为String数组
- 在Linux中执行.sh脚本,异常
- myeclipse项目导入到eclipse, HttpServletRequest报红现象
- [BAT] 执行xcopy命令后出现Invalid num of parameters错误的解决办法