《组合实体模式(极简c++)》

news/2024/9/22 21:26:12/

         本文章属于专栏- 概述 - 《设计模式(极简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 flyingreturn 0;
}


http://www.ppmy.cn/news/1434088.html

相关文章

框架中的单例模式

上一节我们介绍了单例模式模板 本节来讨论下&#xff0c;在框架代码中&#xff0c;怎样设计单例模式 考虑这种场景&#xff1a; 框架的开发者写了一个类 Config用来管理整个程序运行周期中的配置文件&#xff0c;整个程序中应该只有一个配置文件类&#xff0c;所以站在框架开发…

【PHP】PHP7中的引用计数

目录 一、环境二、前言三、字符串类型四、数组类型问题1:不变数组的作用是什么?问题2:为什么非空的不变数组的refcount初始值是2?五、引用类型六、参阅一、环境 PHP 7.4 二、前言 PHP的变量在底层有一个引用计数(refcount)属性,这个引用计数是为垃圾回收(GC)服务的…

力扣HOT100 - 98. 验证二叉搜索树

解题思路&#xff1a; class Solution {public boolean isValidBST(TreeNode root) {return recur(root,Long.MIN_VALUE,Long.MAX_VALUE);}public boolean recur(TreeNode root,long lower,long upper){if(rootnull) return true;if(root.val<lower||root.val>upper) re…

【电控笔记5.10】Luenberger估测器

Luenberger估测计 单积分器:pi控制器的补偿 双积分器:使用pid控制器的补偿 除了受控厂跟传感器,其他都在mcu 去掉Rs就是一个PLL锁相环 带宽比PLL更大

在PostgreSQL中如何有效地批量导入大量数据,并确保数据加载过程中的性能和稳定性?

文章目录 解决方案1. 使用COPY命令2. 调整配置参数3. 禁用索引和约束4. 使用事务5. 并发导入 总结 在PostgreSQL中&#xff0c;批量导入大量数据是一个常见的需求&#xff0c;特别是在数据迁移、数据仓库填充或大数据分析等场景中。为了确保数据加载过程中的性能和稳定性&#…

Redux入门:使用@reduxjs/toolkit构建React应用程序状态管理

随着应用程序复杂性的增加,有效管理应用程序状态变得越来越重要。Redux是一种流行的状态管理解决方案,随着应用程序复杂性的增加,有效管理应用程序状态变得越来越重要。Redux是一种流行的状态管理解决方案,但传统的Redux设置和使用过程比较繁琐。幸运的是,Redux官方团队推出了r…

Linux 引导过程与服务控制

Linux操作系统引导过程 完整启动过程 简化紧要关键步骤&#xff08;重点&#xff09; Linux系统开机引导过程&#xff1a; 1&#xff09;开机自检 检测硬件设备&#xff0c;找到能够引导系统的设备&#xff0c;比如硬盘 2&#xff09;MBR引导 运行MBR扇区里的主…

Linux 第一章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…