组合模式(Composite Pattern)
定义
组合模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树形结构,并且能像使用单独对象一样使用组合对象。组合模式让客户端代码对单个对象和复合对象的使用具有一致性。
(图片来源网络,侵删)
在组合模式中,我们定义以下几个角色:
-
Component:这是一个抽象组件接口,它定义了所有组件共有的行为。这些行为包括添加和删除子组件、显示子组件等。
-
Leaf:这是具体组件,也就是叶子节点,它实现了组件接口,但没有子组件。
-
Composite:这也是具体组件,但它充当容器角色,它持有一组子组件,并实现了组件接口。Composite 负责在其内部实现子组件的递归组合。
示例
下面是一个C++中使用组合模式的示例,我们创建一个简单的图形系统,其中包含圆形、矩形和组合图形(可以包含其他图形):
#include #include // 组件接口 class Shape { public: virtual void draw() = 0; virtual void add(Shape* shape) = 0; virtual void remove(Shape* shape) = 0; virtual std::vector getChildren() = 0; }; // 叶子节点:圆形 class Circle : public Shape { private: int radius; public: Circle(int radius) : radius(radius) {} void draw() override { std::cout
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。