C#设计模式-结构型相关课件
合成模式(Composite)
• 设计方案一:
合成模式(Composite)
• 设计方案二
合成模式(Composite)
• 设计方案一和设计方案二的区别
– 设计方案二使得客户端更不需要关心所需处理的组件的
类别
– 设计方案二需要对某类增加对额外操作行为的处理
• 实现方案二的Demo
合成模式(Composite)
• 小结
– 该模式采用树形结构来实现普遍存在的对象容器,从而将“一对
多”的关系转化为“一对一”的关系,使得客户代码可以一致地
处理对象和对象容器,无需关心处理的是单个的对象,还是组合
的对象容器
– 将“客户代码与复杂的对象容器结构”解耦是合成模式的核心思
想,这样做之后,客户代码将与纯粹的抽象接口而非对象容器的
复杂内部实现结构发生依赖关系
– 合成模式中,是将“增加和删除等与容器相关的方法”定义在表
示抽象对象的Component类中,还是将其定义在“表示对象容器
的Composite类”中,是一个关乎“透明性”和“安全性”孰轻
孰重的选择,这需要仔细权衡
合成模式(Composite)
• 练习
– 背景知识
• html语言中的<frameset>标签,<frameset>标签主要用来将一
个web页分割成不同的部分以方便在每一个部分显示不同的网
页,<frame>标签则用来在<frameset>标签中分割的某一部分
指定要显示的网页,并且一个<frameset>标签可以被嵌套到另
外一个<frameset>中。
– 一个使用<frameset>标签的html例子
合成模式(Composite)
<html>
<head></head>
<frameset rows="80%,20%">
<frameset cols="100,200">
<frame src="frame1.html"></frame>
<frame src="frame2.html"></frame>
</frameset>
<frame src="frame3.html"></fra