`
王杲杲
  • 浏览: 44382 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

“学习OO好榜样”之Composite模式

 
阅读更多
个人感觉Composite模式是一个比较牛X的模式。完美地实现了“树”这一现实实体在OO软件世界的映射。
此模式巧妙之处在于,树叶和枝干实现了同一接口,但树干同时是装载该接口实现类实例的容器,树干可以容纳树叶、同时也可以再容纳树干,于是,一棵数就完美地被描绘出来了。
一个比较典型的例子就是,界面上的Panel是容器的同时、也是控件,可以容纳控件的同时也可以再容纳容器(这里说得就比较罗嗦了,容器本身就是控件嘛)。
但需要注意的是,容器对接口方法的实现需要自律,通常是遍历调用容器内容纳的接口实现类实例的同名方法。
JUnit架构中也有Composite模式的完美应用,TestCase是Test、TestSuite也是Test,但TestSuite是容器、可以容纳Test实现类实例,即,可以容纳TestCase实例和TestSuite实例。于是我们设计测试流程的时候,可以把测试用例任意打包、任意组合、包了再包。
记得以前实现类似算法,每次都要判断是否是叶子、或者优化成比较难以理解的递归算法,总之不是十分理想。
等看到Composite模式的时候真就是相见恨晚了。
分享到:
评论

相关推荐

    学习oo好榜样(设计良品)

    【学习oo好榜样(设计良品)】 设计良好的软件代码是每个程序员追求的目标,而避免“Bad Smells”(不良代码气味)并进行重构是实现这一目标的重要手段。本篇文章将探讨两个重要的代码质量指标——重复的代码...

    OO中对于23种设计模式的整理

    8. 合成模式(Composite Pattern) 合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式就是一个处理对象的树结构的模式。合成模式把部分与整体的关系用树结构表示出来。合成模式使得客户端把一...

    23种设计模式,OO思想

    标题和描述中提到的“23种设计模式,OO思想”,是软件工程领域的一个核心概念,尤其是对于面向对象编程(Object-Oriented Programming,简称OO)的深入理解和实践至关重要。设计模式是由Erich Gamma、Richard Helm、...

    ABAP OOALV学习文档

    ### ABAP OOALV 学习文档详析 #### 一、ABAP OOALV 概述 **ABAP OOALV**(Object-Oriented Application List Viewer)是一种用于SAP系统的高级列表显示技术,主要用于生成复杂的报表和列表视图。自R/3 4.6C版本起...

    二维码OO电子商务商业模式案例分析.pptx

    【二维码OO电子商务商业模式】是一种将线上与线下商业活动深度融合的新型模式,旨在通过移动互联网技术,尤其是二维码的应用,实现消费者的在线购买与线下的消费体验。随着全球手机用户的急剧增长,尤其是中国市场的...

    基于信息化教学时代背景下高职院校OO混合式教学模式设计研究.docx

    【基于信息化教学时代背景下高职院校OO混合式教学模式设计研究】 在信息化教学时代,高职院校的教学方式正在经历深刻的变革。O2O(Online to Offline)混合式教学模式,结合线上和线下教学,成为提升教学质量的有效...

    23个设计模式标准OO结构

    3. 组合模式(Composite):允许你将对象组合成树形结构来表示“整体/部分”层次结构。 4. 装饰模式(Decorator):动态地给对象添加一些额外的职责,提供比继承更多的灵活性。 5. 外观模式(Facade):提供一个统一...

    OO与设计模式

    软件工程软考认证,Java与设计模式,下午必考题,24种设计模式

    5-互评-OO之接口-DAO模式代码阅读及应用

    总结来说,"5-互评-OO之接口-DAO模式代码阅读及应用"这个主题涵盖了Java开发中的关键知识点,包括接口的概念及其在实现模块间契约中的作用,以及DAO模式在数据访问层的设计和实现。理解并熟练应用这些知识对于提升...

    SAP ABAP开发学习——第10课:OOALV(视频教程)

    在本课程中,我们将深入探讨SAP ABAP的面向对象技术在ALV(ABAP List Viewer)中的应用,这是SAP ABAP开发学习的第10课,专注于OOALV。这个主题对于任何想要在SAP系统中进行高效数据展现和处理的开发者来说都是至关...

    java设计模式之面向对象的思想(think in OO(Object Oriented))

    9. 组合模式(Composite Pattern):组合模式将对象组织成树形结构,可以表示部分与整体的层次结构。客户端可以一致地对待单个对象和对象组合。 10. 代理模式(Proxy Pattern):代理模式为其他对象提供一种代理以...

    实战OO的pdf自留备份

    最后的"开启征程结尾篇"可能是一个结语或者后记,鼓励读者将所学应用到实际项目中,开始他们的OO编程实践之旅。 在标签中提到的"类图"是UML(统一建模语言)的一种图表,用于表示类的结构和关系,包括类的属性、...

    设计模式——可复用的OO软件

    设计模式——可复用的OO软件

    head first 设计模式

    第12章介绍如何将两个以上的设计模式结合起来成为新的设计模式(例如著名的MVC模式),作者称其为复合设计模式(这是作者自创的名称,并非四人组的标准名词),第13章介绍如何进一步学习设计模式,如何发觉新的设计模式...

    移动互联网思维改造传统商业模式及OO实战.ppt

    移动互联网思维改造传统商业模式及OO实战 移动互联网思维改造传统商业模式及OO实战是指通过互联网思维来改造传统的商业模式,使其适应移动互联网时代的发展趋势。这个概念的提出是为了帮助传统企业适应移动互联网...

    OOALV常用功能完整简例

    例如,“g_alv_grid”是一个OOALV对象的引用类型,而“g_it_show”是一个与之关联的内表。代码片段中展示了如何通过SQL查询读取数据,并通过ALV展示。 “PERFORM frm_set_alv_toolbar”这一行代码表明系统中存在一...

    Head First 设计模式(中文完整版+附书源码)part1

    第12章介绍如何将两个以上的设计模式结合起来成为新的设计模式(例如著名的MVC模式),作者称其为复合设计模式(这是作者自创的名称,并非四人组的标准名词),第13章介绍如何进一步学习设计模式,如何发觉新的设计...

    OO设计和伪状态模式实现的控制台五子棋游戏

    在本项目中,"OO设计和伪状态模式实现的控制台五子棋游戏"是一个用C#编程语言实现的控制台应用程序,旨在教授面向对象编程(Object-Oriented Programming, OOP)和设计模式,特别是状态模式的应用。下面将详细阐述...

    《Head First Java》是本完整的面向对象(object-oriented,OO)程序设计和Java的学习指导

    第一册:《Head First Java》是本完整的面向对象(object-oriented,OO)程序设计和Java的学习指导。 第二册:《HeadFirst设计模式》(中文版)共有14章,每章都介绍了几个设计模式,完整地涵盖了四人组版本全部23个设计...

    浅谈CSS编程的OOCSS和SMACSS设计模式

    在CSS编程中,OOCSS(Object-Oriented CSS)和SMACSS(Scalable and Modular Architecture for CSS)是两种重要的设计模式,它们旨在提高CSS代码的可维护性和可扩展性。这两种模式都是为了优化CSS编写方式,降低对...

Global site tag (gtag.js) - Google Analytics