设计原则--迪米特法则

60 阅读1分钟

假设现在有一个场景:
人绑定了吃饭,睡觉两个功能,那动物也是有这两个功能的,是不是也要绑定这两个功能??

type person struct {}
func (p *person) eat(){}
func (p *person) sleep(){}

type animal struct {}
func (a *animal) eat(){}
func (a *animal) sleep(){}

显得很繁琐,于是有一种 迪米特法则 出现了
就是把功能提到一个特定结构体身上绑定
然后新的结构体需要绑定 吃饭,睡觉 的就不要直接绑定了,就直接利用组合间接绑定

package main

type creature struct{}

func (c *creature) eat()   {}
func (c *creature) sleep() {}

type person struct {
   c *creature
}
type student struct {
   c *creature
}
func main(){}