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.如何:首先定义一个公共抽象类,接着组合对象、叶子节点继承这些抽象类,这样就形成了树形结构,最后就是组装。

最新文章

  1. python if
  2. 网络&热恋NSURLConnection代理及GET¥POST请求
  3. net-snmp子代理(SubAgent)编写详述
  4. redis密码管理
  5. phpcms后台登陆验证码不显示的解决方法
  6. .net中清理内存,清理占用内存方式方法
  7. iis 管理员执行 aspnet_iis.exe
  8. 修改首页的main里面的内容
  9. 剑指OFFER之复杂链表的复制(九度OJ1524)
  10. 获取DLL的文件路径以及调用DLL的文件路径
  11. linux的grep命令
  12. HDU4681 String(dp)
  13. python functools.wraps装饰器模块
  14. DrawerLayout学习笔记
  15. RestSharp使用总结
  16. Luogu5283 十二省联考2019异或粽子(trie/可持久化trie+堆)
  17. 如何判断java对象是否为String数组
  18. 在Linux中执行.sh脚本,异常
  19. myeclipse项目导入到eclipse, HttpServletRequest报红现象
  20. [BAT] 执行xcopy命令后出现Invalid num of parameters错误的解决办法

热门文章

  1. LeetCode40 Combination Sum II
  2. jquery 和 $
  3. [转]Android中内存占用的含义:(VSS,PSS,RSS,USS)
  4. BeginInvoke、ThreadPool、Task三类异步方法的区别和速度比较
  5. DPKG命令与软件安装、APT
  6. Java学习笔记——字符串常用函数
  7. C中宏展开问题
  8. sift算法中翻译的第11页中比值问题
  9. virsh default启动失败原因分析及解决
  10. jquery查找父元素、子元素(个人经验总结)