C++代码学习之一:组合模式例子

 1 #include"AbstractFile.h" void AbstractFile::add(AbstractFile*)
 2 {
 3 } void AbstractFile::remove()
 4 {
 5 } void AbstractFile::display()
 6 {
 7 } #include"Folder.h"
 8 folder::folder(string filename)
 9 {
10     this->filename=filename;
11 } void folder::remove()
12 {
13 } void folder::add(AbstractFile *p)
14 {
15     m_vAbstractfile.push_back(p);
16 } void folder::display()
17 {
18     cout<<"+"<<filename<<endl;
19     vector<AbstractFile*>::iterator it=m_vAbstractfile.begin();
20     for(;it!=m_vAbstractfile.end();++it)
21     {
22         (*it)->display();
23     }
24 }
25  #include"imagefile.h"
26  void imagefile::add(AbstractFile* p)
27 {
28 }
29 imagefile::imagefile(string filename)
30 {
31     this->filename=filename;
32 } void imagefile::remove()
33 {
34 } void imagefile::display()
35 {
36     cout<<"图片输出 "<<this->filename<<endl;
37 }
38  #include"videofile.h"
39 videofile::videofile(string filename)
40 {
41     this->filename=filename;
42 } void videofile::add(AbstractFile* p)
43 {
44 } void videofile::remove()
45 {
46 } void videofile::display()
47 {
48     cout<<"影像输出"<<this->filename<<endl;
49 }
50  #include<stdio.h>
51 #include"AbstractFile.h"
52 #include"Folder.h"
53 #include"imagefile.h"
54 #include"videofile.h" int main()
55 {
56     AbstractFile *p=new folder("folder"),*p3,*p2,*p4;
57     folder *p1;
58     p3=new imagefile("imagefile");
59     p2=new videofile("vediofile");
60     p4=new imagefile("imagefile2");
61     p1=new folder("folder1");
62     p->add(p3);
63     p->add(p2);
64
65     p1->add(p4);
66     p->add(p1);
67     p->display();
68
69     return 0;
70 } 
时间: 2024-09-30 20:55:24

C++代码学习之一:组合模式例子的相关文章

跟着ZHONGHuan学习设计模式--组合模式

跟着ZHONGHuan学习设计模式 组合模式 介绍: 想必你已经了解了数据结构中的树,ok,组合模式对于你就是一会儿的功夫了.组合模式相对来说比较简单.看一下定义 组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构.使得用户对单个对象和组合对象的使用具有一致性. 暂时没有想到好的例子,如果你有,请告诉我.下面我用树来对组合模式进行解释.树的结构是下面的这样的: 没棵树有一个根节点,也有叶子节点和树枝节点,一些结构都是用树结构表示的,例如树形菜单,文件和文件夹目录.那么如何存储管理这样的

数据库学习设计模式--组合模式

介绍: 想必你已经了解了数据结构中的树,ok,组合模式对于你就是一会儿的功夫了.组合模式相对来说比较简单.看一下定义 abstract class Component { protected String name; //这个用来标示一下节点 public Component(String name) { this.name = name; } public abstract void add(Component c);//增加儿子节点 public abstract void remove(C

设计模式学习笔记——组合模式

组合模式 组合模式,将对象组合合成树形结构以表示"部分-整体"的层次结构.组合模式使得用户对单个对象和组合对象的使用具有一致性. 代码实现 接口声明Component /** * 接口声明 * @author xukai 2016年3月26日 下午4:58:37 * */ public abstract class Component { protected String name; public Component(String name) { this.name = name; }

设计模式学习心得&lt;组合模式 Composite&gt;

组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这种类型的设计模式属于结构型模式,它创建了对象组的树形结构. 这种模式创建了一个包含自己对象组的类.该类提供了修改相同对象组的方式. 概述 意图 将对象组合成树形结构以表示"部分-整体"的层次结构.组合模式使得用户对单个对象和组合对象的使用具有一致性. 主要解决 它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客

设计模式学习笔记--组合模式

1 using System; 2 3 namespace Composite 4 { 5 /// <summary> 6 /// 作者:bzyzhang 7 /// 时间:2016/5/30 7:11:10 8 /// 博客地址:http://www.cnblogs.com/bzyzhang/ 9 /// Component说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 10 /// </summary> 11 public abstract cl

java/android 设计模式学习笔记(12)---组合模式

这篇我们来介绍一下组合模式(Composite Pattern),它也称为部分整体模式(Part-Whole Pattern),结构型模式之一.组合模式比较简单,它将一组相似的对象看作一个对象处理,并根据一个树状结构来组合对象,然后提供一个统一的方法去访问相应的对象,以此忽略掉对象与对象集合之间的差别.这个最典型的例子就是数据结构中的树了,如果一个节点有子节点,那么它就是枝干节点,如果没有子节点,那么它就是叶子节点,那么怎么把枝干节点和叶子节点统一当作一种对象处理呢?这就需要用到组合模式了. 转

Java进阶篇设计模式之六 ----- 组合模式和过滤器模式

前言 在上一篇中我们学习了结构型模式的外观模式和装饰器模式.本篇则来学习下组合模式和过滤器模式. 组合模式 简介 组合模式是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这种类型的设计模式属于结构型模式,它创建了对象组的树形结构. 简单来说的话,就是根据树形结构把相似的对象进行组合,然后表示该部分是用来做啥的.在中有个很形象的例子,就是电脑中的 文件系统. 文件系统由目录和文件组成.每个目录都可以装内容.目录的内容可以是文件,也可以是目录.按照

设计模式之十五:组合模式(Composite)

组合模式: 将对象组合成树形结构来表示部分与整体的关系.组合模式让客户能将单个对象和组合对象统一对待. Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly. 感觉这是一个很有意思的模式,递归的思路在这里面也得到了体现.如果考虑的业务

java设计模式之组合模式

树形结构在软件中随处可见,例如操作系统中的目录结构.应用软件中的菜单.办公系统中的公司组织结构等等,如何运用面向对象的方式来处理这种树形结构是组合模式需要解决的问题,组合模式通过一种巧妙的设计方案使得用户可以一致性地处理整个树形结构或者树形结构的一部分,也可以一致性地处理树形结构中的叶子节点(不包含子节点的节点)和容器节点(包含子节点的节点).下面将学习这种用于处理树形结构的组合模式. 11.1 设计杀毒软件的框架结构 Sunny软件公司欲开发一个杀毒(AntiVirus)软件,该软件既可以对某