设计模式-组合模式

概念

  • 生成树形结构,表示"整体-部分"关系
  • 让整体和部分都具有一致的操作方式

演示

  • JS经典应用中,未找到这么复杂的数据类型
  • 虚拟DOM中的vnode是这种形式,但数据类型简单
  • (用JS实现一个菜单,不算经典应用,与业务相关)

代码演示:

复制代码
<div id="div1" class="container">
    <p>123</p>
    <p>456</p>
</div>

{
    tag: 'div',
    attr: {
        id: 'div1',
        className: 'container'
    },
    children: [
        {
            tag: 'p',
            attr: {},
            children: ['123']
        },
        {
            tag: 'p',
            attr: {},
            children: ['456']
        }
    ]
}

总结

  • 整体和单个节点的操作是一致的
  • 整体和单个节点的数据结构也保持一致

设计原则验证

  • 将整体和单个节点的操作抽象出来
  • 符合开放封闭原则
相关推荐
杨充5 小时前
10.可测试性实战设计
设计模式·开源·代码规范
杨充5 小时前
9.重构十二式的实战
设计模式·开源·代码规范
杨充5 小时前
6.设计原则的全景图
设计模式·开源·全栈
杨充5 小时前
2.面向对象的特性
设计模式
杨充5 小时前
7.SOLID原则案例汇
设计模式·开源·全栈
杨充5 小时前
8.反模式与坏味道
设计模式·开源·代码规范
杨充6 小时前
3.接口vs抽象类比较
设计模式
咖啡八杯9 小时前
文法、BNF与AST
java·设计模式·解释器模式·ast·文法
咖啡八杯17 小时前
GoF设计模式——解释器模式
java·后端·spring·设计模式