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

上一篇:LeetCode算法题-To Lower Case(Java实现)


下一篇:python之路——面向对象(进阶篇)