GOOD:整体和部分可以被一致对待(如WORD中复制一个文字、一段文字、一篇文章都是一样的操作)

#ifndef __COMPOSITE_MODEL__
#define __COMPOSITE_MODEL__ #include <iostream>
#include <string>
#include <vector>
using namespace std;class Component
{
public:string m_strName;Component(string strName){m_strName = strName;}virtual void add(Component* com) = 0;virtual void display(int nDepth) = 0;
};class Leaf : public Component
{
public:Leaf(string strName) : Component(strName){}virtual void add(Component* com){cout<<"leaf can't add"<<endl;}virtual void display(int nDepth){string strtemp;for (int i=0; i<nDepth; ++i){strtemp += "-";}strtemp += m_strName;cout<<strtemp<<endl;}
};class Composite : public Component
{
private:vector<Component*> m_component;
public:Composite(string strName) : Component(strName) {}virtual void add(Component* com){m_component.push_back(com);}virtual void display(int nDepth){string strtemp;for(int i=0; i<nDepth; ++i){strtemp += "-";}strtemp += m_strName;cout<<strtemp<<endl;vector<Component*>::iterator iter = m_component.begin();while(iter!=m_component.end()){(*iter)->display(nDepth+2);iter++;}}
};#endif //__COMPOSITE_MODEL__/*
#include "CompositeModel.h"
int _tmain(int argc, _TCHAR* argv[])
{
Composite* p = new Composite("小王");
p->add(new Leaf("小李"));
p->add(new Leaf("小赵"));Composite* p1 = new Composite("小小五");
p1->add(new Leaf("大三"));p->add(p1);
p->display(1);return 0;
}
*/

转载于:https://www.cnblogs.com/MrGreen/p/3420529.html

设计模式 之 《组合模式》相关推荐

  1. 每天一个设计模式之组合模式

    作者按:<每天一个设计模式>旨在初步领会设计模式的精髓,目前采用javascript和python两种语言实现.诚然,每种设计模式都有多种实现方式,但此小册只记录最直截了当的实现方式 :) ...

  2. 1、【设计模式】组合模式

    java设计模式之组合模式 [学习难度:★★★☆☆,使用频率:★★★★☆]  树形结构在软件中随处可见,例如操作系统中的目录结构.应用软件中的菜单.办公系统中的公司组织结构等等,如何运用面向对象的方式 ...

  3. 详解设计模式:组合模式

    组合模式(Composite Pattern),又叫部分整体模式,是 GoF 的 23 种设计模式中的一种结构型设计模式. 组合模式 是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组 ...

  4. 结构型设计模式之组合模式

    结构型设计模式之组合模式 组合模式 应用场景 优缺点 主要角色 组合模式结构 分类 透明组合模式 创建抽象根节点 创建树枝节点 创建叶子节点 客户端调用 安全组合模式 创建抽象根节点 创建树枝节点 创 ...

  5. java设计模式之组合模式(树形层级)

    java设计模式之组合模式 学习难度:★★★☆☆,使用频率:★★★★☆]  树形结构在软件中随处可见,例如操作系统中的目录结构.应用软件中的菜单.办公系统中的公司组织结构等等,如何运用面向对象的方式来 ...

  6. Java设计模式之组合模式详解

    文章目录 详解Java设计模式之组合模式 案例引入 组合模式 定义 模式类图结构 相关角色 典型代码 案例分析 类图设计 实例代码 结果分析 JavaJDK中的组合模式 透明组合模式 安全组合模式 组 ...

  7. Java设计模式之组合模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

  8. 设计模式之组合模式(Composite)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  9. 设计模式复习-组合模式

    #pragma once #include "stdafx.h" #include<set> #include<string> #include<io ...

  10. Java 设计模式之组合模式

    一.了解组合模式 1.1 什么是组合模式 组合模式允许你将对象组合成树形结构来表现"整体/部分"层次机构.组合能够使客户以一致的方式处理个别对象以及组合对象. 组合模式让我们能够用 ...

最新文章

  1. ps-axure学习之感受
  2. 支付宝当面付扫码支付支付后不回调_支付宝当面付门店码
  3. [小算法] 找出单链表中的中间元素
  4. 第一讲 无穷级数的概念
  5. 关于windows图形编程 Hello2 程序的问题
  6. [渝粤教育] 中国地质大学 结构力学 复习题
  7. memcached搭建缓存系统
  8. MyBatis的配置和用法
  9. 老板凭啥提拔你:如何得到老板赏识
  10. android 内存泄漏问题【转】
  11. iOS项目转移到自动引用计数
  12. python实现一个简单的网上购物系统
  13. 中青杯数学建模竞赛是什么级别的比赛_2018年中青杯全国大学生数学建模竞赛...
  14. 苹果手机上怎么打开html,苹果手机信息怎么打开浏览器
  15. 福建首发互联网监测报告 云计算市场增速迅猛
  16. 打飞机小游戏html代码,JavaScript用200行代码制作打飞机小游戏
  17. html级联选择器,jquery实现 级联选择器
  18. 怎样在线制作视频二维码?多种类型二维码一键生成技巧
  19. 网易云歌单重合率2.0
  20. TCP、UDP的区别

热门文章

  1. spring源码阅读(1/4) - Bean生成
  2. protobuf---messge嵌套get set
  3. 如何熟悉一个开源项目
  4. .Net如何统计在线人数
  5. d3.js 共享交换平台demo
  6. 论一个程序员的自我修养-从一张图片说起
  7. LintCode 6.合并排序数组 ||
  8. Android Activity标签属性
  9. 005 vim程序编辑器
  10. oracle-REDO日志文件分析(insert)