什么是组合模式?
Go 语言中的组合模式是一种结构型设计模式,它采用树形结构来组织对象,以表达'部分 - 整体'的层次关系。这种设计使得客户端能够以统一的方式处理单个对象和对象组合。
该模式的核心思想是将一组对象视为同类型的单一实例。通过构建树形结构,每个对象独立完成特定任务,并递归地将执行结果传递到顶层对象进行聚合处理。
主要应用场景:
- 树形结构数据:如文件系统、组织架构等存在树形结构关系的数据。
- 动态嵌套 UI 组件:如界面菜单、表单控件等嵌套形结构。
如何实现组合模式?
组合模式包含安全组合模式和透明组合模式两种实现方式,主要区别体现在子节点管理方法的处理上。
以部门组织机构为例,部门组织机构由部门和人员两类数据对象构成。其中,部门可以包含下级部门和人员,而人员只能归属于某个部门。主要实现根据名称查询人员处理。
安全组合模式
定义组合接口 Component,提供 Search() 方法,代码示例如下:
// Component 定义组合接口
type Component interface {
// Search 根据名称进行查询
Search(name string)
}
定义人员信息,并实现组合接口 Component 中的 Search() 方法,代码示例如下:
// Person 人员信息
type Person struct {
// 人员名称
Name string
}
// Search 查询接口
func (p *Person) Search(name string) {
// 进行人员名称比对
if strings.Contains(p.Name, name) {
fmt.Printf("找到名称匹配的人员:%s\n", p.Name)
}
}


