go设计模式之组合设计模式

组合设计模式

简介

将对象组合成树形结构以表示“部分-整体”的层次结构。组合设计模式使得用户对单个对象和组合对象的使用具有一致性。

参与者

  • Component

    为组合中的对象声明接口

  • Leaf

    在组合中表示叶子节点对象。

  • Composite

    存储子部件。访问和管理子部件。

案例1

component.go

package maintype Component interface {Execute()
}

leaf.go

package mainimport "fmt"type Leaf struct {name string
}func (l *Leaf) Execute() {fmt.Printf("%s leaf execute\n", l.name)
}

composite.go

package mainimport "fmt"type Composite struct {name       stringcomponents []Component
}func (cm *Composite) Execute() {fmt.Printf("%s composite execute\n", cm.name)for _, c := range cm.components {c.Execute()}
}func (cm *Composite) Add(component Component) {cm.components = append(cm.components, component)
}

client.go

package mainfunc main() {composite1 := &Composite{name: "composite1"}composite2 := &Composite{name: "composite2"}leaf1 := &Leaf{name: "leaf1"}leaf2 := &Leaf{name: "leaf2"}leaf3 := &Leaf{name: "leaf3"}composite2.Add(composite1)composite1.Add(leaf1)composite2.Add(leaf2)composite2.Add(leaf3)composite2.Execute()
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/5288.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

H3C无线AP管理命令

先上链接 01-AP管理命令-新华三集团-H3C display wlan ap all

程序设计:C语言 调用命令行程序并获得输出 popen(源码)

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 这是个很基本的功能&#xff0…

记录不熟悉的函数用法(C++)——assign

1. assign (仅顺序容器) 记录起因:不知道一个vector给另一个vector在不是初始化时是如何赋值的,于是翻看《C Primer》,在“标准库类型vector”这一节中,并没有得到解答。于是,上网搜索,搜到一篇&#xff0…

redis安装配置

简单启动一个redis容器 拉取redis镜像:(更多版本看https://hub.docker.com/_/redis/tags) sudo docker pull redis:7.2.4简单启动一个redis服务 ,–requirepass 指定密码 123456 sudo docker run -d \ --name redis \ --restartalways \ -p 6379:6379…

Java 如何避免代码中大量的 if else 判断

文章目录 Java 如何避免代码中大量的 if else 判断解决方案1.策略模式2.工厂模式3.策略模式 工厂模式4.提前 return(适用于分支逻辑很简单的 if else)5.枚举 Java 如何避免代码中大量的 if else 判断 在代码中经常会出现 if else 判断,如下…

当众演讲技巧的方法有哪些(3篇)

当众演讲技巧的方法有哪些(3篇) 当众演讲技巧的方法有很多,下面我将分三篇来详细阐述其中的一些关键技巧: **篇:准备与开场技巧 充分准备:提前规划演讲内容,明确主题和目标,准备详…

自然语言转SQL 学习笔记

自然语言转SQL 学习笔记 0. 引言1. 技巧1. **明确数据库表的结构**2. **表间关联的明确说明**3. **字段格式的具体说明**4. **字段取值的具体范围**5. **专业术语的准确定义**6. **数据库类型的指定**7. **考虑查询性能优化**8. **事务处理和一致性需求**9. **数据聚合和分组需…

【蓝桥杯C++A组省三 | 一场勇敢的征途与致19岁的信】

随着4.13西大四楼考场的倒计时结束… 就这样蓝桥杯落幕了 省三的名次既满足又不甘心,但又确乎说得上是19岁途中的又一枚勋章 从去年得知,纠结是否要报名、到寒假开始战战兢兢地准备、陆续开始创作博客,记录好题和成长……感谢你们的关注&…

APT预警攻击平台截获Nday

APT预警攻击平台截获Nday 2024年4月26日 设备漏洞【漏洞利用】H3C Magic R100任意代码执行漏洞(CVE-2022-34598) 0000 : 0010 : 0020 : 0030 : 0040 : 0050 : 0060 : 0070 :6F 72…

请求接口报错:java.lang.IllegalStateException: argument type mismatch

目录 一、场景二、报错信息三、控制器四、接口调用五、原因六、解决 一、场景 1、调用后端接口报错 2、接口参数以Json方式传递 – 二、报错信息 java.lang.IllegalStateException: argument type mismatch Controller [com.xxx.huarunshouzheng.controller.MallControlle…

线性结构与树形结构的区别

线性结构与树形结构在数据组织和关系表达上存在显著的差异。 线性结构是一个有序的数据元素的集合,其中的每个数据元素都有且仅有一个直接前驱和一个直接后继(除了第一个元素没有前驱,最后一个元素没有后继)。这种一对一的关系使得…

CCF-CSP真题题解:201409-3 字符串匹配

201409-3 字符串匹配 #include <iostream> #include <cstring> #include <algorithm> using namespace std;int n, type; string s, p;string tolower(string s) {string res;for (char c : s) res tolower(c);return res; }int main() {cin >> p >…

2024年华东杯数学建模思路+论文+代码

B 题 自动驾驶中的转弯问题 随着科学技术的迅速发展&#xff0c;自动驾驶已不再是无法触及的奇迹。但自动驾驶也面临着 一系列的技术难题和安全挑战。自动驾驶汽车需要精确、实时地感知和理解环境&#xff0c;以便做 出高效的驾驶决策。在遇到复杂天气时&#xff0c;还需要…

Kappa系数-评估分类算法的表现

#创作灵感# 涉及到算法的评价指标&#xff0c;其中有个 Kappa 系数&#xff0c;这里记录一下&#xff0c;便于理解。 #正文# 在机器学习领域&#xff0c;评价分类算法的准确性是至关重要的一环。而Kappa系数作为一种评价分类算法准确性的方法&#xff0c;能够帮助我们更全面地…

go 映射(Map)使用注意事项

在 Go 语言中&#xff0c;映射&#xff08;Map&#xff09;是一种非常有用的数据结构&#xff0c;用于存储键值对。以下是使用 Go 映射时的一些注意事项&#xff1a; 声明和初始化&#xff1a; 使用 map[KeyType]ElementType 形式声明映射类型。使用 make 函数初始化映射&#…

react中解决 Capture Value 问题

解决 Capture Value 问题通常涉及确保你的函数或 Hook 能够访问到最新的状态或 props。这里有几种常见的方法&#xff1a; 使用依赖数组&#xff1a; 对于 useEffect、useCallback 和 useMemo&#xff0c;你可以通过在依赖数组中列出所有外部依赖来确保捕获的值是最新的。当依赖…

【探索Linux】P.33(HTTP协议)

阅读导航 引言一、认识URL二、URL编码和解码1. Urlencode&#xff08;URL编码&#xff09;2. Urldecode&#xff08;URL解码&#xff09; 三、HTTP的方法四、HTTP的状态码五、HTTP常见Header六、最简单的HTTP服务器温馨提示 引言 在上一篇文章中&#xff0c;我们深入探讨了“自…

【数据结构与算法】力扣 150. 逆波兰表达式求值

题目描述 给你一个字符串数组 tokens &#xff0c;表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意&#xff1a; 有效的算符为 、-、* 和 / 。每个操作数&#xff08;运算对象&#xff09;都可以是一个整数或者另一个表…

[学习笔记] Android综合_2024-4-30

数据库注意&#xff1a; 前端与后端之间 要有事务、锁。 要用innodb才支持事务。 记得使用接口测试工具测试&#xff08;HTTP ResuestListener&#xff09;。 后端给前端发返回的数据类型一定要是map。 为了简洁&#xff0c;后端所有参数用post接口&#xff0c;别用get接口…

大模型日报2024-04-30

大模型日报 2024-04-30 大模型资讯 2024年&#xff1a;检索增强生成&#xff08;RAG&#xff09;技术的兴起 摘要: 2024年4月&#xff0c;Mikhail Mew报道&#xff0c;检索增强生成&#xff08;RAG&#xff09;技术近来成为热点。尽管大型语言模型&#xff08;LLMs&#xff09;…