设计模式之----组合模式

设计模式之----组合模式

定义: 允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及组合对象。

举一个很简单的例子,我们有两个类一个是菜单类Menu,另一个是菜单项类MenuItem(几个菜单项类组成一个菜单)

比如说我们有个几个菜单项类,如:烤鸭,红烧肉,西红柿炒鸡蛋

这几个构成了午餐菜单,我们这里不但有午餐还有晚餐和早餐

我们用一个ArrayList来存储菜单

ArrayList<Menu> menus = new ArrayList<>();

在这个ArrayList中,我们只能存储Menu类,不能存储MenuItem类

但是我们想在晚餐中加入甜点菜单,因为甜点也算晚餐中的一道菜

但是我们没法在菜单中加入,因为晚餐菜单是由MenuItem类构成的

菜单流程

我们所希望实现的状态应该是上图的表现形式,但是我们没法使用一种数据结构使Menu和MenuItem混用

所以我们引用组合模式,组合模式通过树形结构让Menu和MenuItem可以混用

上面的图就可以改成

树形结构

这样,所有的叶子节点其实都是MneuItem类,我们通过叶子节点的组合组合出了菜单节点,而且使菜单和菜单项可以混合存储

这就是组合节点的好处,可以忽略对象组合和个别对象之间的差异

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值