首页 > 其他分享 >Composite设计模式

Composite设计模式

时间:2024-03-31 13:12:45浏览次数:20  
标签:__ val Composite 子类 Component 设计模式 class

Composite设计模式

  • 虚函数

  • 继承与父类.又可以携带指针(Delegation)

示例代码:

component.h -> 统一父类

#pragma once
#ifndef __COMPONENT__
#define __COMPONENT__

class Component
{
int value;
public:
Component(int val) : value(val) {}
// 定义一个虚函数 -> 之所以不是纯虚函数是因为不是每个子类都要去实现它
virtual void add(Component*) {}
};

#endif // !__COMPONENT__

primitive.h -> 子类A

#pragma once
#ifndef __PRIMITIVE__
#define __PRIMITIVE__

#include "component.h"

class Primitive : public Component
{
public:
// 调用父类构造函数
Primitive(int val): Component(val) {}
};

#endif // !__PRIMITIVE__

composite.h -> 子类B

#pragma once
#ifndef __COMPOSITE__
#define __COMPOSITE__

#include "component.h"

class Composite : public Component
{
vector<Component*> c;
public:
Composite(int val): Component(val) {}

// 实现父类虚函数
void add(Component* elem) { c.push_back(elem); }
};

#endif // !__COMPOSITE__

创建未来的子类(abstraction)

子类自己去创造自己,并且创建出来的会被登记到abstraction当中,abstraction就可以调用下面子类的方法

class当中staticdata一定要在class外进行声明一次 -> class外的声明才会给到内存

 

标签:__,val,Composite,子类,Component,设计模式,class
From: https://www.cnblogs.com/JunkingBoy/p/18106619

相关文章

  • 瑞_23种设计模式_中介者模式
    文章目录1中介者模式(MediatorPattern)1.1介绍1.2概述1.3中介者模式的结构1.4中介者模式的优缺点1.5中介者模式的使用场景2案例一2.1需求2.2代码实现3案例二3.1需求3.2代码实现......
  • [Java]23种设计模式
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/18031969出自【进步*于辰的博客】启发博文:《一次性讲清Java23种设计模式》(转发)。目录1、设计模式是什么?2、23种设计模式2.1创建型模式2.1.1单例模式最后1、设计模式是......
  • 设计模式DP-外观模式
    #include<stdio.h>#include<string.h>#include<stdlib.h>//定义子系统AtypedefstructsubsystemA{ void(*operationA)(structsubsystemA*subsystem);}SubsystemA;//定义子系统BtypedefstructsubsystemB{ void(*operationB)(structsubsystem......
  • 设计模式DP-责任链模式
    #include<stdio.h>#include<string.h>#include<stdlib.h>//定义业务处理者抽象类typedefstructHandler{ structHandler*nextHandler; void(*handleRequest)(structHandler*handler,intrequest); void(*setNextHandler)(structHandler*CurHan......
  • 设计模式DP-表驱动模式
    静态结构体数组式构建链表式构建链接式构建#include<stdio.h>#include<stdlib.h>#include<string.h> //加doublefun_add(doubledata_front,doubledata_back){ returndata_front+data_back;}//减doublefun_sub(doubledata_front,doubledata_back)......
  • 设计模式-----观察者模式
    一、概念1、Observer模式的概念         (Observer)被称作发布-订阅者模式或消息机制,定义了一种依赖关系,解决了主体对象与观察者之间功能的耦合。        (Observer)模式是行为模式之一,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对......
  • 设计模式DP-模版模式
    #include<stdio.h>#include<string.h>#include<stdlib.h>typedefstructInterface_t{ /*初始化外设USB、SPI、IIC等*/ void(*init_peripheral)(void*obj); /*初始化硬盘*/ void(*init_disk)(void*obj); /*初始化内存*/ void(*init_memory)(void*obj);......
  • 设计模式DP-原型模式
    #include<stdio.h>#include<string.h>#include<stdlib.h>//定义抽象接口typedefstructinterface_t{ structinterface_t*(*clone)(void*obj); void(*set)(void*obj,constchar*name,intage); void(*show)(void*obj); charname[32];......
  • 分享23种追女生的方式,教你同时把追MM和设计模式融汇贯通(下
    想知道咱们公司最新MM情报吗?加入公司的MM情报邮件组就行了,tom负责搜集情报,他发现的新情报不用一个一个通知我们,直接发布给邮件组,我们作为订阅者(观察者)就可以及时收到情报啦。观察者模式:观察者模式定义了一种一队多的依赖关系,让多个观察者对象同时监听某一个主题对象......
  • Pillow教程03:图像处理的基本步骤+分离split+合并merge+混合blend+composite遮罩
    --------------Pillow教程集合---------------Python项目18:使用Pillow模块,随机生成4位数的图片验证码Python教程93:初识Pillow模块(创建Image对象+查看属性+图片的保存与缩放)Pillow教程02:图片的裁剪+复制粘贴+旋转角度+翻转+降噪滤镜(平滑、锐化、边缘检测)Pillow教程03:图像......