20、Java 设计模式:组合模式与观察者模式解析

Java 设计模式:组合模式与观察者模式解析

1. 组合模式概述

组合对象具有层次结构,层次结构中的每个对象都实现相同的接口,即组合接口。组合模式描述了组织组合对象类的首选方式,这些类分为两类:
- 基类 :其对象是组合层次结构的叶子节点。
- 递归类 :其对象构成层次结构的内部节点。每个递归对象包装一个或多个实现组合接口的对象,这些被包装的对象称为其子对象。

1.1 组合对象与装饰器对象的区别

从语法上看,组合对象与装饰器对象非常相似,但它们的用途完全不同:
| 类型 | 特点 | 结构 | 用途 |
| ---- | ---- | ---- | ---- |
| 组合对象 | 可以有多个子对象 | 树结构 | 非根对象组合执行根对象的方法 |
| 装饰器对象 | 只能有一个子对象 | 链结构 | 递归对象增强链末端基对象的方法 |

1.2 组合模式的方法设计

在设计符合组合模式的类时,需要考虑方法的透明度:
- 修改子对象列表的方法 :不应在组合接口中定义,因为这会允许客户端对基对象执行无意义(且可能危险)的操作。更好的做法是在包装类中定义这些方法,并以非透明的方式使用它们。
- 遍历组合层次结构的方法 :可以为组合接口设计方法,使客户端能够透明地遍历组合层次结构。例如 childIterator 方法返回包含对象子对象的迭代器, iterator

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值