设计模式--组合模式

组合模式

前言

结构型软件设计的主要目的是将不同类和对象组合在一起,形成更加或者更复杂的结构体。例如,形成复杂的用户接口或者复杂的账目数据接口。值得注意的是该模式不是简单的将这些类摆在一起,而是提供这些类之间的连接方式。
组合模式讲一个或多个相似的对象构成组合对象,各个对象有相似的功能。该模式以相同的方式对待单独的对象与一组对象,即组合对象。例如,等同地对待的叶子结点与树枝结点。

概念

组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。

类设计图

组合模式结构图组合模式所包含的各组成部分的意义如下:

  1. Component:为组合模式中的对象声明接口,在适当的情况下,实现所有类共同接口的默认行为;声明一个接口用于访问和管理其组件;在递归结构中定义一个接口,用于访问一个父组件,并在合适的情况下实现。
  2. Leaf:在组合模式中表示叶结点对象,叶结点对象没有子结点,实现Component的所有方法。
  3. Composite:表示组合部件(注意部件带有子部件),实现操纵子部件的方法;实现所有在Component 的操作。
  4. Client:通过Component接口操纵组合部件的对象。

各组成部分的协作过程是,用户使用Component 类接口与组合结构中的对象进行交互。如果接受者是一个Leaf,则直接处理请求;如果接受者是Composite,则通常将请求转发给子部件,在请求转发之前或者之后可能执行一些辅助操作。

介绍

1. 分类

  • 安全形势的组合模式
  • 透明形势的组合模式

2. 再次理解组合模式
组合模式允许你将对象组合成树形结构来表现”部分-整体“的层次结构,使得客户以一致的方式处理单个对象以及对象的组合。
组合模式实现的最关键的地方是——简单对象和复合对象必须实现相同的接口。这就是组合模式能够将组合对象和简单对象进行一致处理的原因。

3. 优点

  1. 定义了包含基本对象和组合对象的类层次结构,基本对象可以被组合成更复杂的组合对象,而这个组合对象又可以被组合。
  2. 简化了客户代码。客户可以一致地组合结构和单个对象,通常用户不知道处理的是一个叶结点还是一个组合部件。
  3. 使得更容易增加新类型的组件。新定义的Composite 或Leaf 子类自动与已有的结构和客户代码一起工作,客户程序不需要因为新的Composite 而改变。
  4. 使设计变得更通用。

应用场景

:空军指挥系统设计与实现的实例。
在本例中,考虑空军的各种类型的飞机组队飞行以便执行任务。本例考虑的空军力量(Airforce)包括战斗机(Fighter)、轰炸机(Bomber)、运输机(Transport)与电子信息侦查机(EPlane)。战斗分队分为空军中对(Squadron),空军团(Group)和空军(Wing)。各个战斗单位可以由不同的机种组成,例如一个空军中队由24 架飞机组成,其中包括18架战斗机,2架轰炸机,2架运输机,2架电子信息侦查机。但有时候可以临时组织战斗单位,以便执行特殊任务。
1. 类设计图
在这里插入图片描述在该设计类图中,为了体现设计单位的组成设计了一个类,叫做AirUnit 类。该类在组合模式中为Composite 类,负者组件空军单位,中队,空军团,空军或者临时组合成的战斗模式。

2. 代码
代码连接:【例3.3】-组合模式-空军组合系统

用我三生烟火,换你一世迷离

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值