组合模式(Composite)

简介: 组合模式:一种数据的组织形式,要解决的问题与迭代器模式(Iterator)类似都是聚合对象的遍历和处理,但是组合模式处理的问题比迭代器模式(Iterator)更加复杂组合模式原理:餐厅菜单新需求导致的遍历困难餐厅菜单聚类结构现状(不关心怎么实现、数据结构,只要获取到迭代器就可以访问菜单明细,很好的解耦了)Paste_Image.

组合模式:一种数据的组织形式,要解决的问题与迭代器模式(Iterator)类似都是聚合对象的遍历和处理,但是组合模式处理的问题比迭代器模式(Iterator)更加复杂

  1. 组合模式原理:

    • 餐厅菜单新需求导致的遍历困难

      • 餐厅菜单聚类结构现状(不关心怎么实现、数据结构,只要获取到迭代器就可以访问菜单明细,很好的解耦了)


        Paste_Image.png
      • 添加餐后甜点子菜单


        Paste_Image.png

        困难:数据结构?怎么遍历?
        数据结构中的子项必须是MenuItem类型的(扩展的不是),导致遍历也出现问题

      • 结构抽象


        Paste_Image.png
        1. 需要用树形结构,节点是菜单或子菜单,叶子是菜单项,
        2. 需要能够在各个菜单项之间游走,遍历
        3. 要能够有弹性的在菜单项之间游走(可能只遍历部分子菜单)
    • 组合模式的原理和设计方案
      组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式能让用户以一致的方式(继承自同一个超类)来处理单个对象(菜单)及组合对象(子菜单),也就是我们可以忽略单个对象与组合对象之间的差别(继承自同一个超类)


      Paste_Image.png
  2. 组合模式示例代码讲解

    • 示例项目类结构图


      Paste_Image.png
  3. 组合模式关键点

目录
相关文章
|
存储 安全
组合模式(Composite)
组合模式(Composite)
118 0
|
设计模式 Java 容器
设计模式~组合模式(composite)-16
目录 (1)优点: (2)缺点: (3)使用场景: (4)注意事项: (5)应用实例 代码
66 0
|
前端开发
关于组合模式我所知道的
关于组合模式我所知道的
58 0
|
设计模式 Java 数据安全/隐私保护
Java设计模式-组合模式(Composite)
Java设计模式-组合模式(Composite)
|
存储 设计模式 安全
结构型模式 - 组合模式(Composite Pattern)
结构型模式 - 组合模式(Composite Pattern)
|
设计模式
我学会了,组合模式
组合模式属于结构型模式,这个类型的设计模式总结出了 类、对象组合后的经典结构,将类、对象的结构和使用解耦了,花式的去借用对象。
112 0
我学会了,组合模式
|
安全 Java 容器
结构型:组合模式 Composite
主要内容有: 该模式的介绍,包括: 引子、意图(大白话解释) 类图、时序图(理论规范) 该模式的代码示例:熟悉该模式的代码长什么样子 该模式的优缺点:模式不是万金油,不可以滥用模式 该模式的应用案例:了解它在哪些重要的源码中被使用
168 0
|
设计模式 算法
结构型-Composite
组合模式的原理与实现在 GoF 的《设计模式》一书中,组合模式是这样定义的: Compose objects into tree structure to represent part-whole hierarchies.Composite lets client treat individual objects and compositions of objects uniformly. 翻译成中文就是:将一组对象组织(Compose)成树形结构,以表示一种“部分 - 整体”的层次结构。组合让客户端(在很多设计模式书籍中,“客户端”代指代码的使用者。)可以统一单个对象和组合对象的处理逻辑。
130 0
|
存储 设计模式 Java
浅谈JAVA设计模式之——组合模式(Composite)
将对象组合成树形结构以表示"部分-整体"的层次结构。"Composite使得用户对单个对象和组合对象的使用具有一致性。
230 0
浅谈JAVA设计模式之——组合模式(Composite)
|
Java 设计模式