1、肯德基套餐便是一种组合模式, 比如鸡腿堡套餐,一样平常是是由一个鸡腿堡,一包薯条,一杯可乐等组成的
2、组装的台式机同理,由主板,电源,内存条,显卡, 机箱,显示器,外设等组成的
把一个成型的产品组成部件,分成一个个独立的部件,这种办法可以做出很多灵巧的产品,这便是组合模式的上风

比如:家用台式机电脑,哀求配置比较低, 这个时候只须要主板+电源+内存条+机箱+显示器+外设就可以了,不须要配置独立显卡
鸡腿堡+鸡翅+紫薯+可乐可以配置出其余一种套餐。
而在我们的前端领域,常常要打仗的便是排版,通过不同的html构造+css样式组合成不用绚丽多彩的网页,我们也可以通过组合模式来完成的,
有人可能要问,为什么要用js来天生,直接写html和css不是很省事吗?是的,但是用组合模式做身分歧的套餐(模块),是不是可以非常快的天生出不同的模板呢? 大大提高网页编写的速率?
本文我们来实战一个最基本的列表新闻模块,看看怎么利用组合模式?先看下要做出来的效果:
这个是一个无序列表加一个a标签,非常大略的套餐(模块)
1、首先,我们定义父类,2个属性,3个方法
this.element用来存储当前的元素,this.children用来存储当前元素下面的子元素
init方法:用来初始化元素的标签,属性,样式
add方法:把子节点添加在父节点下面
getElement: 获取当前的节点
2、这里我们须要用到寄生组合继续
3,由于这个新闻模块最外层是ul,以是我们要封装一个天生ul元素的容器类
采取寄生组合继续,把父类的方法重写,父类的属性通过子类的借用布局函数复制到子类实例上,新增了一个show方法,这个方法的目的便是,把终极的模板显示出来
4、天生li元素
5、天生图片与a标签组合的办法
6,天生纯挚的a标签和内容这种组合
7,天生带分类的新闻标题
8、大功告成,开始调用天生末了的模块
作者:ghostwu, 出处:http://www.cnblogs.com/ghostwu