组合模式Golang

组合模式

组合模式(Composite Pattern): 组合多个对象形成树形结构表示具有”整体一部分”关系的层次结构.
适用场景: 希望客户端可以忽略组合对象与单个对象的差异

优点 和 缺点

优点

  1. 清楚地定义分层次的复杂对象, 表示对象的全部或部分层次
  2. 简化客户端代码
  3. 节点自由增加

缺点

  1. 限制类型比较复杂
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
type IOrganization interface {
Count() int
}

type Employee struct {
Name string
}

func (Employee) Count() int {
return 1
}

type Department struct {
Name string

SubOrganizations []IOrganization
}

func (d Department) Count() int {
c := 0
for _, org := range d.SubOrganizations {
c += org.Count()
}
return c
}

func (d *Department) AddSub(org IOrganization) {
d.SubOrganizations = append(d.SubOrganizations, org)
}

Powered by Hexo and Hexo-theme-hiker

Copyright © 2018 - 2021 Noonde All Rights Reserved.

UV : | PV :