展开

关键词

概述 UML类图 代码栗子 总结 概述 概念 是指将对象成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和对象的使用具有一致性。 作用:让客户端不再区分操作的是对象还是叶子对象,而是以一个统一的方来操作。 ? UML类图 ? Branch) s); } } return info; } } 总结 场景 当遇到想表示树形结构时(如菜单栏 等),优先考虑 缺点 安全性和透明性是互相矛盾的,这是由于叶子节点和非叶子节点行为的不一致以及需要提供一个一致的行为接口所造成的,是不可调和的矛盾 实际中,的大多数使用场景可以通过表设计进行规范解决 参考资料 书籍:《设计之禅》

16320

.

一、概念 :允许你将对象成树形结构来表现“整体/部分”层次结构。能让客户以一致的方处理个别对象以及对象包含件。件有两种:和叶节点元素。 为了要保持透明性,内所有的对象都必须实现这个接口,否则客户就必须操心哪个对象是用哪个接口,这就失去了的意义。 特别适用于树形结构,假设我们有了一个树形结构的菜单、子菜单和可能还带有菜单项的子菜单,那么任何一个菜单都是一种“”。 是违反单一职责原则的,这是一个典型的折衷案例。以单一责任设计原则换取换取透明性。什么是透明性?通过让件的接口同时包含一些管理子节点和叶节点的操作,客户就可以将和叶节点一视同仁。 的优点:  1、让我们能用树形方创建对象的结构,树里面包含了以及个别的对象(叶节点元素)。  2、使用结构,我们能把相同的操作应用在和个别对象(叶节点元素)上。

25640
  • 广告
    关闭

    90+款云产品免费体验

    提供包括云服务器,云数据库在内的90+款云计算产品。打造一站式的云产品试用服务,助力开发者和企业零门槛上云。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ⭐️ 更多前端技术和知识点,搜索订阅号 JS 菌 订阅 在对象间形成树形结构; 中基本对象和对象被一致对待; 无须关心对象有多少层, 调用时只需在根部进行调用; ? -2 // command2-1 // command2-2 // command2-3 应用 扫描文件夹 文件夹下面可以为另一个文件夹也可以为文件, 我们希望统一对待这些文件夹和文件, 这种情形适使用

    19430

    一、简介 1、将对象成树形结构以表示‘部分和整体’的层次结构。使得用户对单个对象和对象的使用具有一致性。 2、中的几个重要的类 Component:中的对象声明接口,在适当情况下,实现所有类共有接口的行为。 Leaf:叶节点对象,叶节点没有子节点。 4、所属类别:结构型 二、C++代码 1 // .cpp : 定义控制台应用程序的入口点。

    24070

    (Composite Pattern)有时候又叫做部分-整体,允许你将对象成树形结构来表现“整体/部分”层次结构。能让客户以一致的方处理个别对象以及对象。 根据《设计》定义:将对象成树形结构以表示“部分整体”的层次结构。使得用户对单个对象和使用具有一致性。 比较复杂,一般有以下用途:       1.你想表示对象的部分-整体层次结构   2.你希望用户忽略对象与单个对象的不同,用户将统一地使用结构中的所有对象。 要点 提供一个结构,可同时包含个别对象和对象。 允许客户对个别对象以及对象一视同仁。 结构内的任意对象成为件,件可以是,也可以是叶节点。 实现时,有许多设计上的折中。你要根据需要平衡透明性和安全性。

    24050

    在之前有接触过,那是第一次接触设计,觉得什么是啊?什么部分与整体。现在再来看,觉得实际上并没有那么神秘。 :将对象成树形结构以表示“部分-整体”的层次结构。 使得用户对单个对象和对象的使用具有一致性。这句话什么意思呢?凡是能类似树形结构的场景,均可使用来实现。对对象和单个对象抽象为一个公共类,这样就使得对它们的使用一致了。 的UML类图结构: image.png 任何复杂的代码其基本结构都是简单的,把简单的灵活应用起来就变得不简单。 rightBranch.add(leaf2); 28 29 root.display(); 30 } 31 32 } 现在我们就实现了一个最基本的 虽然这里我们实现了,也看懂了,但离真正应用还有一段路要走,我之所以想要学这些设计并且写出来,实际上是在为阅读开源代码做准备,阅读开源框架的代码是很好的学习方

    33550

    暂时还没遇到需要这种设计的情景,笔者一般会把层次结构放到数据库里,用 parentId 来标识父子关系 1. (Composite Pattern) 将对象成树形结构以表示 “部分-整体” 的层次结构,使得用户对单个对象和对象的使用具有一致性 成: 抽象根节点(Component ):存放整体的默认行为和属性 树枝节点(Composite):存储叶子节点的集 叶子节点(Leaf):存放真实对象 2. 改进 上面的案例中叶子节点也具有根节点的方法,这是不符逻辑的,可以使用的安全,即改变抽象根节点的方法,而其余不变,这样的话根和叶子的责任就明显了 3.1 修改抽象根节点 public abstract

    6410

    2019年5月23日21:50:31 (composite pattern) 定义 ,将对象成树形结构以表示“部分-整体”的层次结构。 使得用户对单个对象和对象的使用具有一致性。————《设计:可复用面向对象软件的基础》 是一个结构型。 角色 抽象件角色(Component): 所有件的抽象 声明在中的对象的接口 叶子角色(Leaf): 表示中的叶子对象 实现了Component 没有子节点 角色(Composite 推广之后织机构图: 应用的类图: 应用的代码: // 公司织或部门 public interface Company { void addOrg(Company company 总结 是将对象 成树形结构以表示‘部分-整体’的层次结构,使得用户对单个对象和对象的使用具有一致性。 参考 《大话设计》 完 2019年7月18日20:09:21

    4820

    Composite Pattern又叫部分整体,是用于把一相似的对象当作一个单一的对象,通常依据树形结构来对象,用来表示部分以及整体层次,这种类型的设计属于结构型,它创建了对象的树形结构 描述 在软件工程中,是一种分区设计描述了将以与对象的单个实例相同的方对待一对象,的目的是将对象成树状结构,以表示整个部分的层次结构。 即将对象成树形结构以表示部分-整体的层次结构,使得用户对单个对象和对象的使用具有一致性,通常用于树形菜单、文件、文件夹、表单的管理等。 优点 高层块调用简单。 节点自由增加。 忽略对象和单个对象的差别,对外一致接口使用。 缺点 树叶对象接口一致,无法区分,只有在运行时方可辨别。 包裹对象创建太多,额外增加内存负担。 在使用时,其叶子和树枝的声明都是实现类而不是接口,违反了依赖倒置原则。

    28932

    设计----

    : 允许你将对象成树形结构来表现“整体/部分”层次结构。能让客户以一致的方处理个别对象以及对象。 使用结构,我们能把相同的操作应用到和个别对象上。 换句话说,在大多数情况下,我们可以忽略对象和个别对象之间的差别。 的结构: 结点接口/抽象类:在适当的情况下,实现所有类共有接口的默认行为。 叶节点。 节点。实现节点接口/抽象类,包含其他叶节点或节点。 其实我们使用的树结构就是一种结构,只不过树中叶节点和节点是用一个类(节点类)表示的。 public void remove(Component c) {...} } 要点: 提供一个结构,可同时包含个别对象和对象。 允许客户对个别对象以及对象一视同仁。 结构内的任意对象称为件,件可以是,也可以是叶节点。 在实现时,有许多设计上的折衷。你要根据需要平衡透明性和安全性。

    23700

    设计 |

    说明 定义: (Composite Pattern)有时候又叫做部分-整体,用于将对象成树形结构以表示“部分-整体”的层次关系。 使得用户对单个对象和对象的使用具有一致性。 常见使用场景:如树形菜单、文件夹菜单、部门织架构图等。 说到树形就需要先说说树的基本构成: 根节点 是树的一个成部分,也叫树根。 子树 子树就是树的其中一个节点以及其下面的所有的节点所构成的树 结构说明 在中有三个角色, Component、Leaf、Composite, 我们分别看一下 Component 这是中对象声明的接口 Leaf 在中表示叶子结点, 叶子结点没有子节点 Composite 非叶子结点, 用于存储子部件, 在Component接口中实现子部件的相关操作, 比如增加 示例 编写程序展示一个学校的院系结构 university->iprint(); echo PHP_EOL; // 输出计算机学院下面的子节点 $computerCollege->iprint(); // 如果再要强化级别 只需要接着实现 进来就可以

    18920

    设计-

    (Composite)的定义:有时又叫作部分-整体,它是一种将对象成树状的层次结构的,用来表示“部分-整体”的关系,使用户对单个对象和对象具有一致的访问性。 1.优点 使得客户端代码可以一致地处理单个对象和对象,无须关心自己处理的是单个对象,还是对象,这简化了客户端代码; 更容易在体内加入新的对象,客户端不会因为加入了新的对象而更改源代码

    16110

    设计——

    一、基本介绍 ---- 1)、(Composite Pattern):又叫部分整体,它创建了对象的树形结构,将对象成树状结构以表示“整体-部分”的层次关系。 2)、依据树形结构来对象,用来表示部分以及整体层次。 3)、这种设计属于结构型。 4)、使得用户对单个对象和对象的访问具有一致性,即:能让客户以一致的方处理个别对象以及对象。 二、——结构类图 ---- 分为透明和安全:     1)、透明方:在该方法中,由于抽象构建声明了所有子类中的全部方法,所以客户端无需区别树叶对象和树枝对象。 在透明中,抽象构件还声明访问和管理子类的接口(add/remove)。在安全中不声明访问和管理子类的接口,管理工作由树枝构建完成。

    12420

    设计---

    引言 介绍 角色 结构 示例代码 水果盘 文件浏览 更复杂的 透明与安全 透明 安全 总结 优点 缺点 适用场景 应用 XML文档解析 文件 对单个对象(即叶子对象)和对象(即容器对象)的使用具有一致性,又可以称为 “整体—部分”(Part-Whole) ,它是一种对象结构型。 透明与安全 在使用时,根据抽象构件类的定义形,我们可将分为透明和安全两种形。 透明也是的标准形。 设计 | 及典型应用

    11410

    设计-

    将所有的地区成树型结构; 是什么? (Composite Pattern),又叫部分整体,也有叫,是用于把一相似的对象当作一个单一的对象。 依据树形结构来对象,用来表示部分以及整体层次。这种类型的设计属于结构型,它创建了对象的树形结构。分为安全和透明的安全性:从客户使用上看是否更安全。如果是安全的,那么就不会有发生误操作的可能,能访问的方法都是被支持的功能。 的透明性:从客户使用上看是否需要区分到底是对象还是叶子对象。如果是透明的,那就不用再区分,对于客户而言,都是件对象,具体的类型对于客户而言是透明的,是客户无须关心的。 ; 类图 ?

    15531

    【设计-

    【导读】讲究的是“部分-整体”的关系,比如文件与文件夹,文件夹包含了文件和子文件夹,如果需要做一个文件管理系统的话,此时就需要用到。类似与下图的结构: ? 一、定义 将对象成树形结构以表示“部分-整体”的层次结构,使用户对单个对象和对象具有一致的访问性。执行对象时如同执行起元素对象。 System.out.print(" "); } } abstractFile.print(); } } } 文件夹就相当于对象

    16810

    就是几个一起吗?来看看原理

    引导篇及原理 在上一个《迭代器》中,我们讲到了阿里收购网易考拉后,店铺并的问题使用到了迭代器。现在又有了新需求。 我们先来看看新需求: 先说明:并非是把之前学过的设计在一起的一种哈。别理解错了。 其实最后,还是使用的迭代器的。本篇,我们讲解的是。所以,咱要玩点高大上的。咱使用来实现这个需求。 什么是又可以叫做部分-整体。是用于把一类似的对象当作一个单一的对象。依据的是树形结构来对象,用来表示“部分或者是整体”的层次。 所以,我们可以得到其实需要解决的问题是:能让客户以一致的方法来处理个别对象以及对象的。简单理解就是:解决的问题是我们可以忽略对象与个体对象之间的差别的。

    25430

    (Composite)

    定义 将对象成树形结构以表示”部分-整体”的层次结构,Composite使得用户对单个对象和对象的使用具有一致性。 ? 2. UML建图 ? 接口控制部件的对象 3. 研磨设计 商品的类别树: +服装 +男装 -衬衣 -夹克 +女装 -裙子 -套装 对于这种具有整体与部分的关系,并能成树形结构的对象结构,对它们用统一的方进行操作。 —> (Composite)的关键就在于这个父抽象类,这个抽象类既可以代表叶子对象,也可以代表对象,这样用户在操作的时候,对单个对象和对象的使用就具有一致性。

    17920

    (Composition)

    (Composition) (Composition) 意图:将对象成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和对象的使用具有一致性。 应用:图形、文件目录、GUI容器等。 结构: ? 抽象对象应该拥有操作基本对象和对象的所有接口,但是基本对象应该屏蔽某些对象特有的操作,如添加删除等。对象聚了多个抽象对象,这种一对多的关系和继承关系正好描述了一种树形的结构。 那么这个描述的是用户通过操纵一个抽象的文件对象,而不用关系这个对象是文件还是文件夹。文件对象是不允许添加子文件操作的,文件夹对象可以包含多个抽象的文件,即可以是文件也可以子文件夹。 使用的好处从代码中可以看出来,我们可以对顶层对象直接进行调用operation操作,而不需要关心它的内部结构,就像操作Leaf对象一样,增大的代码的灵活性。

    35160

    (Composite)

    (Composite) Intent 将对象成树形结构来表示“整体/部分”层次关系,允许用户以相同的方处理单独对象和对象。 Class Diagram 件(Component)类是类(Composite)和叶子类(Leaf)的父类,可以把类看成是树的中间节点。 对象拥有一个或者多个件对象,因此对象的操作可以委托给件对象去处理,而件对象可以是另一个对象或者叶子对象。 Component component) { throw new UnsupportedOperationException(); // 牺牲透明性换取单一职责原则,这样就不用考虑是叶子节点还是节点

    6130

    相关产品

    • 共享带宽包

      共享带宽包

      共享带宽包(BWP)是一种多IP聚合的计费模式 ,可大幅降低公网费用 。共享带宽包提供包月带宽 ,月 TOP5 消峰计费 ,月 95 消峰计费等多种计费模式 ,满足您不同业务场景。合理配置共享带宽包可帮您大幅降低公网费用 ,优化业务成本。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券