设计模式-组合模式

概念

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

演示

  • 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']
        }
    ]
}

总结

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

设计原则验证

  • 将整体和单个节点的操作抽象出来
  • 符合开放封闭原则
相关推荐
Aniugel2 小时前
JavaScript高级面试题
javascript·设计模式·面试
不当菜虚困2 小时前
JAVA设计模式——(四)门面模式
java·开发语言·设计模式
Niuguangshuo2 小时前
Python设计模式:MVC模式
python·设计模式·mvc
Lei活在当下3 小时前
【现代 Android APP 架构】01. APP 架构综述
android·设计模式·架构
前端大白话3 小时前
震惊!90%前端工程师都踩过的坑!computed属性vs methods到底该怎么选?一文揭秘高效开发密码
前端·vue.js·设计模式
前端大白话3 小时前
前端必看!figure标签在响应式图片排版中的王炸操作,grid/flex布局实战指南
前端·设计模式·html
ApeAssistant3 小时前
Spring + 设计模式 (十四) 行为型 - 观察者模式
spring·设计模式
ApeAssistant3 小时前
Spring + 设计模式 (十三) 行为型 - 策略模式
spring·设计模式
摘星编程4 小时前
并发设计模式实战系列(7):Thread Local Storage (TLS)
设计模式·并发编程
沐土Arvin4 小时前
理解npm的工作原理:优化你的项目依赖管理流程
开发语言·前端·javascript·设计模式·npm·node.js