组合模式(Composite Pattern)

02-29 1595阅读

定义

组合模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树形结构,并且能像使用单独对象一样使用组合对象。组合模式让客户端代码对单个对象和复合对象的使用具有一致性。

组合模式(Composite Pattern)
(图片来源网络,侵删)

在组合模式中,我们定义以下几个角色:

  1. Component:这是一个抽象组件接口,它定义了所有组件共有的行为。这些行为包括添加和删除子组件、显示子组件等。

  2. Leaf:这是具体组件,也就是叶子节点,它实现了组件接口,但没有子组件。

  3. 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 
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]