本文章属于专栏- 概述 - 《设计模式(极简c++版)》-CSDN博客
模式说明
- 方案:组合实体模式是一种结构型设计模式,旨在将一组对象组合成单个对象实体来处理。这个实体统一对外提供操作,而不需要直接操作每个对象。
- 优点:
- 简化复杂性:将多个对象组合成一个实体,简化了系统的复杂性。
- 统一接口:通过统一的接口操作整个组合,提高了系统的可维护性和可扩展性。
- 缺点:
- 限制灵活性:组合实体模式可能限制了系统的灵活性,因为所有的操作都必须通过统一的接口进行。
本质思想:组合实体模式的本质思想是将一组相关对象封装到单个对象中,并提供统一的接口来访问和操作这些对象,以简化复杂性并提高系统的可维护性。
实践建议:一个不需要学,在业务中自然而然就会想到的设计模式。如果没想到,说明在对应的场景没啥用
代码示例:
#include <iostream>
#include <string>
// Component 1: Bird
class Bird {
public:
virtual void fly() = 0;
};
// Leaf 1: Sparrow
class Sparrow : public Bird {
public:
void fly() override {
std::cout << "Sparrow is flying" << std::endl;
}
};
// Leaf 2: Pigeon
class Pigeon : public Bird {
public:
void fly() override {
std::cout << "Pigeon is flying" << std::endl;
}
};
// Composite: BirdGroup
class BirdGroup : public Bird {
private:
Sparrow sparrow;
Pigeon pigeon;
public:
void fly() override {
sparrow.fly();
pigeon.fly();
}
};
int main() {
BirdGroup birdGroup;
birdGroup.fly(); // Output: Sparrow is flying
// Pigeon is flying
return 0;
}