Composite设计模式

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外的声明才会给到内存

 
posted @ 2024-03-31 13:00  俊king  阅读(15)  评论(0)    收藏  举报