设计模式 之 《组合模式》
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
设计模式 之 《组合模式》相关推荐
- 每天一个设计模式之组合模式
作者按:<每天一个设计模式>旨在初步领会设计模式的精髓,目前采用javascript和python两种语言实现.诚然,每种设计模式都有多种实现方式,但此小册只记录最直截了当的实现方式 :) ...
- 1、【设计模式】组合模式
java设计模式之组合模式 [学习难度:★★★☆☆,使用频率:★★★★☆] 树形结构在软件中随处可见,例如操作系统中的目录结构.应用软件中的菜单.办公系统中的公司组织结构等等,如何运用面向对象的方式 ...
- 详解设计模式:组合模式
组合模式(Composite Pattern),又叫部分整体模式,是 GoF 的 23 种设计模式中的一种结构型设计模式. 组合模式 是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组 ...
- 结构型设计模式之组合模式
结构型设计模式之组合模式 组合模式 应用场景 优缺点 主要角色 组合模式结构 分类 透明组合模式 创建抽象根节点 创建树枝节点 创建叶子节点 客户端调用 安全组合模式 创建抽象根节点 创建树枝节点 创 ...
- java设计模式之组合模式(树形层级)
java设计模式之组合模式 学习难度:★★★☆☆,使用频率:★★★★☆] 树形结构在软件中随处可见,例如操作系统中的目录结构.应用软件中的菜单.办公系统中的公司组织结构等等,如何运用面向对象的方式来 ...
- Java设计模式之组合模式详解
文章目录 详解Java设计模式之组合模式 案例引入 组合模式 定义 模式类图结构 相关角色 典型代码 案例分析 类图设计 实例代码 结果分析 JavaJDK中的组合模式 透明组合模式 安全组合模式 组 ...
- Java设计模式之组合模式(UML类图分析+代码详解)
大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...
- 设计模式之组合模式(Composite)摘录
23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...
- 设计模式复习-组合模式
#pragma once #include "stdafx.h" #include<set> #include<string> #include<io ...
- Java 设计模式之组合模式
一.了解组合模式 1.1 什么是组合模式 组合模式允许你将对象组合成树形结构来表现"整体/部分"层次机构.组合能够使客户以一致的方式处理个别对象以及组合对象. 组合模式让我们能够用 ...
最新文章
- ps-axure学习之感受
- 支付宝当面付扫码支付支付后不回调_支付宝当面付门店码
- [小算法] 找出单链表中的中间元素
- 第一讲 无穷级数的概念
- 关于windows图形编程 Hello2 程序的问题
- [渝粤教育] 中国地质大学 结构力学 复习题
- memcached搭建缓存系统
- MyBatis的配置和用法
- 老板凭啥提拔你:如何得到老板赏识
- android 内存泄漏问题【转】
- iOS项目转移到自动引用计数
- python实现一个简单的网上购物系统
- 中青杯数学建模竞赛是什么级别的比赛_2018年中青杯全国大学生数学建模竞赛...
- 苹果手机上怎么打开html,苹果手机信息怎么打开浏览器
- 福建首发互联网监测报告 云计算市场增速迅猛
- 打飞机小游戏html代码,JavaScript用200行代码制作打飞机小游戏
- html级联选择器,jquery实现 级联选择器
- 怎样在线制作视频二维码?多种类型二维码一键生成技巧
- 网易云歌单重合率2.0
- TCP、UDP的区别