设计模式-组合模式

概念

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

演示

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

总结

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

设计原则验证

  • 将整体和单个节点的操作抽象出来
  • 符合开放封闭原则
相关推荐
GISer_Jing3 小时前
智能体工具使用、规划模式
人工智能·设计模式·prompt·aigc
GISer_Jing3 小时前
AI Agent:学习与适应、模型上下文协议
人工智能·学习·设计模式·aigc
小马爱打代码4 小时前
MyBatis设计模式:构建者、工厂、代理模式
设计模式·mybatis·代理模式
月明长歌4 小时前
Javasynchronized 原理拆解:锁升级链路 + JVM 优化 + CAS 与 ABA 问题(完整整合版)
java·开发语言·jvm·安全·设计模式
会员果汁5 小时前
12.设计模式-状态模式
设计模式·状态模式
Yu_Lijing5 小时前
基于C++的《Head First设计模式》笔记——抽象工厂模式
c++·笔记·设计模式
会员果汁8 小时前
13.设计模式-适配器模式
设计模式·适配器模式
GISer_Jing1 天前
AI:多智能体协作与记忆管理
人工智能·设计模式·aigc
雨中飘荡的记忆1 天前
责任链模式实战应用:从理论到生产实践
设计模式
沛沛老爹1 天前
Web开发者进阶AI:Agent技能设计模式之迭代分析与上下文聚合实战
前端·人工智能·设计模式