composite

package
v0.0.0-...-eb36113 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 19, 2023 License: Apache-2.0, MIT Imports: 1 Imported by: 0

README

组合模式

组合模式统一对象和对象集,使得使用相同接口使用对象和对象集。

组合模式常用于树状结构,用于统一叶子节点和树节点的访问,并且可以用于应用某一操作到所有子节点。

Documentation

Index

Examples

Constants

View Source
const (
	LeafNode = iota
	CompositeNode
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Component

type Component interface {
	Parent() Component
	SetParent(Component)
	Name() string
	SetName(string)
	AddChild(Component)
	Print(string)
}

func NewComponent

func NewComponent(kind int, name string) Component

type Composite

type Composite struct {
	// contains filtered or unexported fields
}
Example
root := NewComponent(CompositeNode, "root")
c1 := NewComponent(CompositeNode, "c1")
c2 := NewComponent(CompositeNode, "c2")
c3 := NewComponent(CompositeNode, "c3")

l1 := NewComponent(LeafNode, "l1")
l2 := NewComponent(LeafNode, "l2")
l3 := NewComponent(LeafNode, "l3")

root.AddChild(c1)
root.AddChild(c2)
c1.AddChild(c3)
c1.AddChild(l1)
c2.AddChild(l2)
c2.AddChild(l3)

root.Print("")
Output:

+root
 +c1
  +c3
  -l1
 +c2
  -l2
  -l3

func NewComposite

func NewComposite() *Composite

func (*Composite) AddChild

func (c *Composite) AddChild(child Component)

func (*Composite) Name

func (c *Composite) Name() string

func (*Composite) Parent

func (c *Composite) Parent() Component

func (*Composite) Print

func (c *Composite) Print(pre string)

func (*Composite) SetName

func (c *Composite) SetName(name string)

func (*Composite) SetParent

func (c *Composite) SetParent(parent Component)

type Leaf

type Leaf struct {
	// contains filtered or unexported fields
}

func NewLeaf

func NewLeaf() *Leaf

func (*Leaf) AddChild

func (c *Leaf) AddChild(Component)

func (*Leaf) Name

func (c *Leaf) Name() string

func (*Leaf) Parent

func (c *Leaf) Parent() Component

func (*Leaf) Print

func (c *Leaf) Print(pre string)

func (*Leaf) SetName

func (c *Leaf) SetName(name string)

func (*Leaf) SetParent

func (c *Leaf) SetParent(parent Component)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL