设计模式:组合模式(学习笔记)

本文探讨了组合模式的应用场景,尤其是在处理菜单等复杂结构时的优势。通过使用组合模式,可以简化对象结构,实现统一的对象处理方式,并优化迭代器模式的迭代过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

组合模式原理:

              餐厅菜单聚类结构现状:

                       餐带是一维的时候,方便维护,当变成二维时维护难度增大。例如Diner Menum存在子菜单sub Menum。

              困难:subMenum与原来的Menum数据结构不一致,二维遍历存在问题。

                                             


数据结构抽象:

        1.需要用树形结构,节点是菜单或子菜单,叶子是菜单项
        2.需要能够在各个菜单项之间游走,遍历
        3.要能够有弹性的在菜单项之间游走

    

组合模式:

                  将对象聚合成树形结构来表现“整体/部分”的层次结构。
                  组合模式能让客户以一致的方式来处理个别对象以及对象组合。
                  也就是我们可以忽略对象组合与个体对象之间的差别

示例项目类图结构:


               菜单项跟子菜单想都有迭代器,菜单项迭代器返回空,菜单项返回迭代数据(多叉树遍历思想)。

组合模式的原理和意义:

               1.优化迭代器模式迭代存在的困难,迭代时只需要一种方式处理,很好处理树形结构的遍历问题。

               2.把整体和部分的区别通过超类抹掉,使子类存储结构和细节不需要超类暴漏。

               3.返回迭代器/空迭代器的方式,屏蔽子类迭代方法(数组/集合迭代方法),数据类型与超类解耦合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值