组合模式.

Slides:



Advertisements
Similar presentations
“ 菸 ” 之非福 Part Ⅰ. 你的想法 ─ Q1 :你覺得他很有個性嗎? Q2 :吸菸會增加個人魅力嗎? Q3 :吸菸會讓人感覺成熟?
Advertisements

Chapter 5 教育發展與職業選擇. 1. 認識高職學生的生涯進路。 2. 了解個人特質與職業屬性之 間的關係。 3. 認識打工安全與勞動權益。
學會摘要 四年級 ( 內容擷取自劍潭國小陳錦蓮和詹珮怡老師的簡報 ). 2 分享綱要 1 1 什麼是摘要 2 3 如何教摘要 實例與實際操作.
我們可以如何應付氾濫 ? 2c 第三組. 目錄 防洪 (1) 防洪 (2) 湖北坪興建三峽主壩簡介 長江三峽水利樞紐工程 三峽工程的利益 (Part1) 三峽工程的利益 (Part2) 三峽工程的弊 (Part1) 三峽工程的弊 (Part2) 總結 組員名單 完.
1 寫作測驗武功秘笈 洪德惠老師 99 年 1 月 18 日. 2 PART1 理論部分 3 寫作測驗的基本能力 1. 能掌握寫作步驟,充實作品內容,精確表達自 己的思想。 2. 能依收集材料立意、選材、安排段落及組織等 步驟行文。 3. 能運用觀察的方法觀察周遭事物,並能寫下重 點。 4. 能適切地遣詞造句,使用正確的標點符號,完.
備審資料與面試準備 高雄醫學大學醫學系 林郁涵.
文亭淘宝城销售政策及租金政策 版权声明: 本文仅供客户内部使用,版权归北京和美行房地产经纪公司山东分公司所有,未经北京和美行房地产经纪公司山东分公司书面许可,不得擅自向其它任何机构和个人传阅、引用、复制和发布报告中的部分或全部内容。
第16章 代理模式 Website:
小 王 子 組別:第五組 班級:財金二甲 組員:A 林安潔 A 陳思羽 A 許雅涵
藥物濫用 華德學校上午校 黃秀雯.
党的十八届四中全会 依法治国精神解读. 党的十八届四中全会 依法治国精神解读 一、十八届四中全会概况 中国共产党第十八届中央委员会第四次全体会议,于2014年10月20日至23日在北京举行。 全会审议通过了《中共中央关于全面推进依法治国若干重大问题的决定》。
千秋大业在担当 《中国共产党问责条例》解读提纲.
肌肉、骨骼、關節 傷害急救 組員: 499i0014 高藝庭 499i0017 徐育敏 499i0022 林佳瑩 499i0048 詹謹禎
11-1 保險業之定義 11-2 保險業之設立 11-3 保險業之組織 11-4 保險業之營業範圍
证券市场法律制度与监督管理 作者:张学亮.
C语言程序设计 李伟光.
教學經驗分享 吳毅成 國立交通大學資訊工程系 2012年4月.
9-1 火災保險 9-2 海上保險 9-3 陸空保險 9-4 責任保險 9-5 保證保險 9-6 其他財產保險
大型探索节目《谜》之 感恩.
新建本科院校 应用型人才培养若干问题探析 张德江.
我怀念的乡村记忆 陈秀华 社会工作0841.
沟通技巧 主讲:涂育俊.
槍砲病菌與鋼鐵 第三組.
生命停看聽—生命圖書館 萬中選一的祝福 推薦人:彰師附工進修學校 蘇郁惠.
專題報告製作 胡舉軍 助理教授 資訊管理學系 樹德科技大學
回顾与展望:高州经验与广东医改 省卫生计生委、省医改办 黄 飞 2015年7月3日.
愛心月課程活動 設計者:洪雪玲老師.
《乡村教师支持计划 年》 解读.
1-3 探究自然的科學方法.
第7章 行政监督.
第一章 面向对象程序设计.
姓名:梁晓莹 职务:安徽省旅游局安全办主任(高级经济师) 中国旅游研究院(华侨大学)旅游安全研究基地行业顾问 经历: 自1987年就职于安徽省旅游局 自2009年主持安全办工作 曾主编《旅游安全宣传手册——暨安徽旅游安全格言警句精选》、《安徽旅游安全》、《安徽旅游发展大事记》等 承办过“安徽省旅游安全演讲征文大赛”及“旅游安全调研成果奖”评选等工作.
设计模式可以帮助我们改善系统的设计,增强 系统的健壮性、可扩展性,为以后铺平道路。
氣候變遷對南台灣降雨造成之影響 研究背景 結果與討論 研究方法 結論 朱振豪1 、彭康豪1 、莊煌甲1 、邱俊彥2,* 研究目的
北京市汽车消费市场与媒介 研究分析报告 北京大学市场与媒介研究中心.
本活動 想解決的問題是……. 本活動 想解決的問題是…… 130最少要加上多少才能被8整除? 130最少要減去多少才能被8整除? 《除法定理》 被乘數=乘數 x 商 + 餘數.
雞蛋這樣孵出小雞的 動物的生殖 Part I.
類別的繼承-一般關係: 繼承是宣告的類別繼承現存類別的部份或全部的成員資料和方法 , 新增額外的成員資料和方法或覆寫和隱藏繼承類別的方法
第八章 分析與設計階段 – 物件導向設計(OOD)
第9章 单例模式 Website:
世界看遍 终归回到纯水岸 波托菲诺08年终总结. 世界看遍 终归回到纯水岸 波托菲诺08年终总结.
外观模式.
Design Pattern (2) 设计模式(2) Institute of Computer Software 2018/9/21
實驗四:單位轉換程式.
Ch08 巢狀類別 物件導向程式設計(II).
第15章 使用定制组件 使用定制组件是在Flex提供的组件基础上创建自定义的组件模块。虽然Flex内置了大量的组件以满足不同应用的需求,但是这些组件只是用户界面中较为常见的元素。在大型的或者复杂的应用中,往往需要将这些基本元素组合,组成新的模块单元使用。对于这种情况,Flex提供了自定义组件的功能。本章主要介绍如何使用Flex编程语言创建自定义组件。
Chapter 9 設計的精細製作: 行動計算 Software Engineering – An Engineering Approach, James F. Peters & Witold Pedrycz.
Java 程式設計 講師:FrankLin.
Ch13 集合與泛型 物件導向程式設計(2).
开发Eclipse插件的基本步骤 插件通过添加到预定义的扩展点来向平台添加功能。要将程序代码变成插件,需要: 决定插件如何与平台集成
2018/12/3 面向对象与多线程综合实验-网络编程 教师:段鹏飞.
职责链模式.
第9章 類別圖與物件圖 9-1 類別圖與物件圖的基礎 9-2 類別圖的符號 9-3 類別關係 9-4 物件圖 9-5 繪製類別圖與物件圖
中国矿大计算机学院杨东平 第5章 接口和包 中国矿大计算机学院杨东平
C/C++/Java 哪些值不是头等程序对象
简单工厂模式.
第14章 外观模式 Deng Song
面向对象 程序设计语言基础 马骏
JAVA 编 程 技 术 主编 贾振华 2010年1月.
第12章 组合模式 Deng Song
公务卡日常管理篇 办卡激活/遗失补办/ 停用销卡/额度调整 财务处 2016年.
第7章 建造者模式 Deng Song
——向刑事案件被告人家属调查取证的伦理性讨论
辅导课程十一.
第二章 Java基本语法 讲师:复凡.
喜雨亭記 國二甲 S 陳姿婷.
方格紙上畫正方形.
JAVA 程式設計與資料結構 第三章 物件的設計.
技專校院多元入學管道 國立臺北科技大學 教務處 涂雅筑.
日本的蜻蜓.
Presentation transcript:

组合模式

本章教学内容 组合模式 模式动机与定义 模式结构与分析 模式实例与解析 模式效果与应用 模式扩展

组合模式 模式动机

组合模式 模式动机 对于树形结构,当容器对象(如文件夹)的某一个方法被调用时,将遍历整个树形结构,寻找也包含这个方法的成员对象(可以是容器对象,也可以是叶子对象,如子文件夹和文件)并调用执行。(递归调用) 由于容器对象和叶子对象在功能上的区别,在使用这些对象的客户端代码中必须有区别地对待容器对象和叶子对象,而实际上大多数情况下客户端希望一致地处理它们,因为对于这些对象的区别对待将会使得程序非常复杂。

组合模式 模式动机 组合模式描述了如何将容器对象和叶子对象进行递归组合,使得用户在使用时无须对它们进行区分,可以一致地对待容器对象和叶子对象,这就是组合模式的模式动机。

组合模式 模式定义 组合模式(Composite Pattern):组合多个对象形成树形结构以表示“整体-部分”的结构层次。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性。 组合模式又可以称为“整体-部分”(Part-Whole)模式,属于对象的结构模式,它将对象组织到树结构中,可以用来描述整体与部分的关系。

组合模式 模式定义 Composite Pattern: Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly. Frequency of use: medium high

组合模式 模式结构

组合模式 模式结构 组合模式包含如下角色: Component: 抽象构件 Leaf: 叶子构件 Composite: 容器构件 Client: 客户类

组合模式 模式分析 组合模式的关键是定义了一个抽象构件类,它既可以代表叶子,又可以代表容器,而客户端针对该抽象构件类进行编程,无须知道它到底表示的是叶子还是容器,可以对其进行统一处理。 同时容器对象与抽象构件类之间还建立一个聚合关联关系,在容器对象中既可以包含叶子,也可以包含容器,以此实现递归组合,形成一个树形结构。

组合模式 模式分析 文件系统组合模式结构图:

组合模式 模式分析 典型的抽象构件角色代码: public abstract class Component { public abstract void add(Component c); public abstract void remove(Component c); public abstract Component getChild(int i); public abstract void operation(); }

组合模式 模式分析 典型的叶子构件角色代码: public class Leaf extends Component { public void add(Component c) { //异常处理或错误提示 } public void remove(Component c) public Component getChild(int i) public void operation() //实现代码 }

组合模式 模式分析 典型的容器构件角色代码: public class Composite extends Component { private ArrayList list = new ArrayList(); public void add(Component c) list.add(c); } public void remove(Component c) list.remove(c); public Component getChild(int i) (Component)list.get(i); public void operation() for(Object obj:list) ((Component)obj).operation(); 组合模式 模式分析 典型的容器构件角色代码:

组合模式 组合模式实例与解析 实例一:水果盘 在水果盘(Plate)中有一些水果,如苹果(Apple)、香蕉(Banana)、梨子(Pear),当然大水果盘中还可以有小水果盘,现需要对盘中的水果进行遍历(吃),当然如果对一个水果盘执行“吃”方法,实际上就是吃其中的水果。使用组合模式模拟该场景。

组合模式 组合模式实例与解析 实例一:水果盘

组合模式 组合模式实例与解析 实例一:水果盘 参考代码 (Chapter 12 Composite\sample01) 演示……

组合模式 组合模式实例与解析 实例二:文件浏览 文件有不同类型,不同类型的文件其浏览方式有所区别,如文本文件和图片文件的浏览方式就不相同。对文件夹的浏览实际上就是对其中所包含文件的浏览,而客户端可以一致地对文件和文件夹进行操作,无须关心它们的区别。使用组合模式来模拟文件的浏览操作。

组合模式 组合模式实例与解析 实例二:文件浏览

组合模式 模式优缺点 组合模式的优点 可以清楚地定义分层次的复杂对象,表示对象的全部或部分层次,使得增加新构件也更容易。 客户端调用简单,客户端可以一致的使用组合结构或其中单个对象。 定义了包含叶子对象和容器对象的类层次结构,叶子对象可以被组合成更复杂的容器对象,而这个容器对象又可以被组合,这样不断递归下去,可以形成复杂的树形结构。 更容易在组合体内加入对象构件,客户端不必因为加入了新的对象构件而更改原有代码。

组合模式 模式优缺点 组合模式的缺点 使设计变得更加抽象,对象的业务规则如果很复杂,则实现组合模式具有很大挑战性,而且不是所有的方法都与叶子对象子类都有关联。 增加新构件时可能会产生一些问题,很难对容器中的构件类型进行限制。

组合模式 模式适用环境 在以下情况下可以使用组合模式: 需要表示一个对象整体或部分层次,在具有整体和部分的层次结构中,希望通过一种方式忽略整体与部分的差异,可以一致地对待它们。 让客户能够忽略不同对象层次的变化,客户端可以针对抽象构件编程,无须关心对象层次结构的细节。 对象的结构是动态的并且复杂程度不一样,但客户需要一致地处理它们。

组合模式 模式应用 (1) XML文档解析 <?xml version="1.0"?> <books> <author>Carson</author> <price format="dollar">31.95</price> <pubdate>05/01/2001</pubdate> </book> <pubinfo> <publisher>MSPress</publisher> <state>WA</state> </pubinfo> </books>

组合模式 模式应用 (2) 操作系统中的目录结构是一个树形结构,因此在对文件和文件夹进行操作时可以应用组合模式,例如杀毒软件在查毒或杀毒时,既可以针对一个具体文件,也可以针对一个目录。如果是对目录查毒或杀毒,将递归处理目录中的每一个子目录和文件。

组合模式 模式应用 (3) JDK的AWT/Swing是组合模式在Java类库中的一个典型实际应用。

组合模式 模式扩展 更复杂的组合模式

组合模式 模式扩展 透明组合模式

组合模式 模式扩展 安全组合模式

本章小结 组合模式用于组合多个对象形成树形结构以表示“整体-部分”的结构层次。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性。组合模式又可以称为“整体-部分”模式,属于对象的结构模式,它将对象组织到树结构中,可以用来描述整体与部分的关系。 组合模式包含三个角色:抽象构件为叶子构件和容器构件对象声明接口,在该角色中可以包含所有子类共有行为的声明和实现;叶子构件在组合结构中表示叶子节点对象,叶子节点没有子节点;容器构件在组合结构中表示容器节点对象,容器节点包含子节点,其子节点可以是叶子节点,也可以是容器节点,它提供一个集合用于存储子节点,实现了在抽象构件中定义的行为。 组合模式的关键是定义了一个抽象构件类,它既可以代表叶子,又可以代表容器,而客户端针对该抽象构件类进行编程,无须知道它到底表示的是叶子还是容器,可以对其进行统一处理。

本章小结 组合模式的主要优点在于可以方便地对层次结构进行控制,客户端调用简单,客户端可以一致的使用组合结构或其中单个对象,用户就不必关心自己处理的是单个对象还是整个组合结构,简化了客户端代码;其缺点在于使设计变得更加抽象,且增加新构件时可能会产生一些问题,而且很难对容器中的构件类型进行限制。 组合模式适用情况包括:需要表示一个对象整体或部分层次;让客户能够忽略不同对象层次的变化,客户端可以针对抽象构件编程,无须关心对象层次结构的细节;对象的结构是动态的并且复杂程度不一样,但客户需要一致地处理它们。 组合模式根据抽象构件类的定义形式,又可以分为透明组合模式和安全组合模式。

END Thanks!