意图:将对象组合成树型结构以表示”部分-整体”的层次结构。Composite使得用户对于单个对象和组合对象的使用具有一致性

Compoite模式的关键是一个抽象类,即表示具体类也表示容器.

示意图:

适用性:

你想表示对象的部分-整体层次结构

你希望用户忽略组合对象和单个对象的不同,用户将统一的使用组合结构中的所有对象

示例代码:

animal:单个对象

//单个动物实体

class CAnimal
{
int id;
public:
    CAnimal(int i)
    {
        id = i;
    }
public:
    ~CAnimal(void)
    {
   
    }
public:
    virtual void MadeSound()=0;//动物发出声音
};

class CDog:public CAnimal
{
private:
   
public:
    CDog(int i)
    :CAnimal(i)
    {
        id = i;
    }
    ~CDog()
    {

}
public:
    virtual void MadeSound()
    {
        _tprintf(_T("Dog %d Bark /n"),this->id);
    }
};

CAnimalArray:组合对象

class CAnimalArray:public CAnimal
{
public:
    CAnimalArray(void);
public:
    ~CAnimalArray(void);
    public:

//组合对象中添加单个对象
    void Add(CAnimal* pAnimal )
    {
        _animals.push_back(pAnimal);
    }

//继承单个对象的操作
    void MadeSound()//一群动物发出声音
    {
        _tprintf(_T("Animal Compsite shouts/n"));
        ANIMALITERATOR iter = _animals.begin();
        for(;iter != _animals.end();iter++)
        {
            CAnimal* panimal = *iter;
            panimal->MadeSound();//组合对象中的具体对象的操作
        }   
    }
    private:
    typedef list<CAnimal*> ANIMALLIST;
    typedef ANIMALLIST::iterator ANIMALITERATOR;
    ANIMALLIST _animals;
       
};

转载于:https://www.cnblogs.com/SkyMouse/archive/2011/05/09/2340739.html

设计模式学习-Composite(组合模式)相关推荐

  1. Java 设计模式之 Composite 组合模式

    Composite  组合模式相对简单,一般用于处理树状结构,递归结构,类似计算机中的文件系统,有文件夹,文件,文件夹里可以有文件:再比如一棵树,有枝干,叶子节点组成,枝干上又有叶子. 这里以构造一棵 ...

  2. JAVA设计模式十七--Composite(组合模式)

    组合模式 组合模式(Composite Pattern)有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念   ,客户程序可以向处理简单元素一样来处理复杂元素,从而使 ...

  3. 设计模式学习笔记——组合(Composite)模式

    设计模式学习笔记--组合(Composite)模式 @(设计模式)[设计模式, 组合模式, composite] 设计模式学习笔记组合Composite模式 基本介绍 组合案例 类图 实现代码 Ent ...

  4. 设计模式学习笔记(九)——Composite组合模式

    Composite组合模式主要是应对这样的问题:一类具有"容器特征"的对象--即他们在充当对象的同时,又是其他对象的容器的情况.在编写时我们常常会造成:客户代码过多地依赖于对象容器 ...

  5. 设计模式08: Composite 组合模式(结构型模式)

    Composite 组合模式(结构型模式) 对象容器的问题 在面向对象系统中,我们常会遇到一类具有"容器"特征的对象--即他们在充当对象的同时,又是其他对象的容器. public ...

  6. C++设计模式-Composite组合模式

    Composite组合模式 作用:将对象组合成树形结构以表示"部分-整体"的层次结构.Composite使得用户对单个对象和组合对象的使用具有一致性. UML图如下: 在Compo ...

  7. 设计模式(八)Composite(组合模式)

    @TOC Composite(组合模式):将对象组合成树形结构以表示"部分-整体"的层次结构.它使得客户对单个对象和复合对象的使用具有一致性. 结构 意图 将对象组合成树形结构以表 ...

  8. 设计模式学习之代理模式学习(一)

    设计模式学习之代理模式学习(一) 关于设计模式想必学习过Java语言的人都知道吧,当时对其进行深入学习的的人应该不是很多.在我看来设计方面的知识相比于框架应用配置等知识要有意思的多,并且设计模式的对一 ...

  9. java 组合代码_java实现Composite组合模式的实例代码

    //20210121 写在前面:刚期末考试完,考了面向对象,里边儿有23个设计模式,我寻思着考完挨个儿实现一下,本文实现组合模式 组合模式核心思想类似文件夹的概念,构件树形结构,树形有叶子结点和文件夹 ...

最新文章

  1. 【CTF】实验吧 凯撒变异
  2. docker笔记1----Get Docker
  3. MVP使用中不好的味道
  4. 关于HTML Object中三个Style实例的区别
  5. GET 和 POST 的区别(重要,面试常问)
  6. HD 1159 Common Subsequence (最长公共子序列)
  7. 京东五星电器送扫地机器人_家电也流行“套餐”,京东五星电器吹响国庆家装“集结号”...
  8. envoy重试_具有Envoy代理的微服务模式,第二部分:超时和重试
  9. linux adduser mysql_linux_adduser
  10. python同时读取多个文件的同一行
  11. Java中的几种设计模式:创建型模式,结构型模式
  12. ztek usb转串口 linux,Z-TEK USB转串口驱动下载
  13. HTML电子邮件格式的制作与发送
  14. 设置图片的透明度从左到右渐变
  15. C与C++学习经典网站
  16. 交互设计师作品集网站整理
  17. Python实战项目2——自动获取酷狗音乐工具
  18. 计算机应用技术职业生涯规划书5000字,计算机应用职业生涯规划书5000字
  19. java中的boolean
  20. excel比较两个表中数据 提取相同列 合并到同一张表中

热门文章

  1. Linux信号量之用户态信号量(Posix信号量->无名信号量)
  2. 2vec需要归一化吗_LTSM模型预测数据如何归一化?(知乎回答)
  3. 3.3线性回归简洁实现(API的使用)
  4. ubuntu下hbase的伪分布式安装与配置
  5. Struts2整合SiteMesh
  6. JUnit学习摘要+入门实例 (junit4)
  7. java连接ibm mq
  8. 剖析Linux系统启动过程
  9. pheonix从入门到进阶
  10. [远航笔记流水账]易大漠多线程初级教程086(1-3)