学习
实践
活动
工具
TVP
写文章

设计模式之组合模式(Composite 模式)引入composite模式composite模式的具体实例composite模式小结

引入composite模式 composite模式的实例 composite模式的分析 小结 引入composite模式 在计算机文件系统中,有文件夹的概念,文件夹里面既可以放入文件也可以放入文件夹 image.png composite模式 composite模式主要有一下几类角色 leaf 树叶 表示内容的角色,该角色中不能放入其他对象,对应我们实例程序中的file Composite 复合物 表示容器的角色,可以放入小容器和内容,也就是leaf和composite,此实例中,由directory类代表composite component 是leaf和composite角色具有一致性的角色 小结 在实例程序中,我们以文件夹的结构实现了composite模式,实际上现实世界中,到处都存在composite模式,例如,视窗系统中,窗口可以含有子窗口也可以含有button类似的控件。 通常来说,树结构的数据结构都适合composite模式

35520

结构型-Composite

GoF 的《设计模式》一书中,组合模式是这样定义的: Compose objects into tree structure to represent part-whole hierarchies.Composite package pattern.structural.composite; public abstract class FileSystemNode { protected String path countSizeOfFiles(); public String getPath() { return path; } } 文件类 package pattern.structural.composite return file.length(); } return 0; } } 目录类 package pattern.structural.composite (i < size) { subNodes.remove(i); } } } Main 方法调用 package pattern.structural.composite

8010
  • 广告
    关闭

    年末·限时回馈

    热卖云产品年终特惠,2核2G轻量应用服务器6.58元/月起,更多上云必备产品助力您轻松上云

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

    组合(Composite)模式

    组合(Composite) Intent 将对象组合成树形结构来表示“整体/部分”层次关系,允许用户以相同的方式处理单独对象和组合对象。 Class Diagram 组件(Component)类是组合类(Composite)和叶子类(Leaf)的父类,可以把组合类看成是树的中间节点。 extends Component { private List<Component> child; public Composite(String name) { root = new Composite("root"); Component node1 = new Leaf("1"); Component node2 = new :root --left:1 --Composite:2 ----left:21 ----Composite:22 ------left:221 --left:3 JDK javax.swing.JComponent

    9230

    组合模式(Composite

    定义 将对象组合成树形结构以表示”部分-整体”的层次结构,Composite模式使得用户对单个对象和组合对象的使用具有一致性。 ? 2. UML建模图 ? 为组合的对象声明接口 在某些情况下实现从此接口派生出的所有类共有的默认行为 定义一个接口可以访问及管理它的多个子部件 Leaf(叶部件) 在组合中表示叶节点对象,叶节点没有子节点 定义组合中接口对象的行为 Composite :public class Composite extends Component { private List<Component> list; //遍历所有元素 @Override ("服装"); Component c1 = new Composite("男装"); Component c2 = new Composite("女装"); / —>组合模式 组合模式(Composite)的关键就在于这个父抽象类,这个抽象类既可以代表叶子对象,也可以代表组合对象,这样用户在操作的时候,对单个对象和组合对象的使用就具有一致性。

    20020

    elasticsearch composite聚合

    composite聚合类似于mysql的多字段group by,比如要按月以及所属门店两个维护来统计每个月的收益,如果用mysql来实现的话类似 select count(commissionamount orgId 等价的elasticsearch可以用嵌套聚合来实现: { "size": 0, "aggs" : { "my_buckets": { "composite

    14910

    设计模式-组合模式(Composite

    定义 将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性.

    24250

    Java组合模式(Composite)

    组合模式(Composite) 使用组合模式的场景:   把部分和整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象. 组合模式核心: 抽象构件(Component)角色: 定义了叶子和容器构件的共同点 叶子(Leaf)构件角色:无子节点 容器(Composite)构件角色: 有容器特征,可以包含子节点 结构类图 ? name; } @Override public void operiation() { System.out.println("视频文件:"+name+" 处理操作"); } } Composite 容器 /** * Composite容器组件 * @author 波波烤鸭 * @email dengpbs@163.com * */ public class Folder implements

    41020

    【设计模式】—— 组合模式Composite

    = new Composite(); 52 composite.getCmposite().add(leaf1); 53 composite.getCmposite() .add(leaf2); 54 composite.getCmposite().sampleComposite(); 55 } 56 }   执行结果 Composite operation = new Composite(); 60 Component composite = new Composite(); 61 62 composite1 ().add(leaf2); 66 composite.getComponent().add(composite1); 67 68 composite.getComponent 执行结果 composite operation! leaf operation! leaf operation! composite operation! leaf operation!

    24080

    设计模式系列,组合模式 Composite

    Composite使得用户对单个对象和组合对象的使用具有一致性。 如果你想要描述这样的数据结构,那么你可以使用组合模式Composite。 4. 树枝构件角色(Composite):定义有子部件的那些部件的行为。存储子部件。 组合模式和其他相关模式 1)装饰模式(Decorator模式)经常与Composite模式一起使用。当装饰和组合一起使用时,它们 通常有一个公共的父类。 3)(迭代器模式)Itertor可用来遍历Composite。 4)(观察者模式)Visitor将本来应该分布在Composite和L e a f类中的操作和行为局部化。 11.

    38230

    十三、组合模式 ( Composite Pattern )

    组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象 组合模式依据树形结构来组合对象,用来表示部分以及整体层次 组合模式创建了一个包含自己对象组的类

    8731

    设计模式之——组合模式 Composite Pattern

    * * } */ } 环境类: public class Client { public static void main(String[] args) { //创建一个根节点 Composite root = new Composite(); root.doSomething(); //创建一个树枝构件 Composite branch = new Composite(); ; //建立整体 root.add(branch); branch.add(leaf); } //通过递归遍历树 public static void display(Composite root.getChildren()){ if(c instanceof Leaf){ //叶子节点 c.doSomething(); }else{ //树枝节点 display((Composite )c); } } } } 我们发现在环境类中直接使用 Composite root = new Composite(); 这个了,违反了依赖倒置原则。

    22620

    Ruby设计模式透析之 —— 组合(Composite)

    Java设计模式透析之 —— 组合(Composite) 听说你们公司最近新推出了一款电子书阅读应用,市场反应很不错,应用里还有图书商城,用户可以在其中随意选购自己喜欢的书籍。

    296100

    PostgreSQL Composite types Useful type or Useless type

    今天想learn about Composite types. 这个类型的是一个让人很迷糊的东西,但如果你从程序员的角度来考虑,这个类型的确是有点“程序化”的思维模式。 1 什么是 composite type, 说白了就是组合类型。我们举一个例子: 一个家庭有男人,女人,孩子(假定家庭是这样的,如果你说两个男人或两个女人,我也不反对,跑题了)。 如果我们用传统的方式来处理,一个家庭,如果一个家庭丧偶,或离婚,我们在传统设计中至少会添加另一个字段来标注这个家庭为什么没有父亲,但如果我们不这样设计,我们用Composite types方式来设计家庭这个关系

    38720

    Go vet composite literal uses unkeyed fields

    在使用go vet进行语法检查时, 报了这么个错composite literal uses unkeyed fields 对于刚开始看Golang的我一脸懵逼, 明明是可以编译通过且跑通的… struct 就报错了... composite literal uses unkeyed fields 看了些资料后知道了, 这样写更严谨一些: request := CallRequest{AccessToken

    6.9K40

    Composite组合模式(结构型模式)

    "一对一"的关系,使得客户端代码可以一致地处理容器对象,不需要关心处理的是单个对象还是含有树形结构的容器对象,将递归处理容器的复杂度交给组合模式来承担. (2)、将客户端调用代码与负责的容器结构解耦是Composite 组合模式的核心思想,解耦之后,客户端代码与依赖的是容器抽象,而不是容器的内部实现结构,从而更能应对变化,试想以下,如果不这么做,如果容器对象发生改变,那么客户端就需要承受这种改变. (3)、Composite

    25030

    10.设计模式--组合模式(Composite模式)

    Department是部门类,其中部门可以包含部门信息以及部门中的人员或下级部门扮演Composite(复合物角色),同时提供了获取部门名称的方法、在部门中增加人员信息以及下级部门信息、根据指定前缀打印部门信息以及部门下级部门和人员信息

    18320

    精读《设计模式 - Composite 组合模式》

    Composite(组合模式) Composite(组合模式)属于结构型模式,是一种统一管理树形结构的抽象方式。 意图:将对象组合成树形结构以表示 “部分 - 整体” 的层次结构。 Composite 使得用户对单个对象和组合对象的使用具有一致性。 Composite 使得用户对单个对象和组合对象的使用具有一致性。 Leaf 表示叶子结点,没有子结点,相应的 Composite 就是有子结点的节点。 如果 Composite 与 Leaf 差异过大,那么统一抽象带来的理解成本是很高的。

    7510

    三十二、组合实体模式 (Composite Entity Pattern)

    组合实体模式(Composite Entity Pattern)用在 EJB 持久化机制中 一个组合实体是一个 EJB 实体 bean,代表了对象的图解 当更新一个组合实体时,内部依赖对象 beans 会自动更新,因为它们是由 EJB 实体 bean 管理的 以下是组合实体 bean 的参与者: 组合实体(Composite Entity) - 它是主要的实体 bean。

    9320

    【325】使用组合模式(Composite Pattern)实现布局容器

    组合模式(Composite)是将对象组合成树形结构,以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。接下来我们考虑在当前项目中应用组合模式。

    19630

    设计模式的征途—9.组合(Composite)模式

    组合模式(Composite) 学习难度:★★★☆☆ 使用频率:★★★★☆ 一、杀毒软件的框架设计 1.1 需求介绍 M公司开发部想要开发一个杀毒软件,该软件既可以针对某个文件夹杀毒,也可以针对某个指定的文件进行杀毒 二、组合模式简介 2.1 模式概述 组合(Composite)模式:组合多个对象形成树形结构以表示具有“整体-部分”关系的层次结构。 (3)Composite(容器构件):它在组合模式中表示容器节点对象,容器节点包含子节点,其子节点可以使叶子结点,也可以是容器节点,它提供一个集合用于存储子节点,实现了在抽象构件中定义的行为。

    29040

    扫码关注腾讯云开发者

    领取腾讯云代金券