能用组合的方式尽量用组合,而不要用继承。
比如:
继承:
type Cat struct{}
func (c Cat) eat{
fmt.println("c eat")}
type Cata struct{
Cat }
func(c Cata)sleep{
fmt.println("c sleep")}
这个继承的方式会在创建Cata对象时把Cat的所有方法都包含了进来。
如果用组合的话:
type Cat struct{}
func (c Cat) eat{
fmt.println("c eat")}
type Cata struct{
}
func(c Cata)sleep{
fmt.println("c sleep")}
func(c Cata)eat( a Cat){
a.eat()
}
效果是一样的 但是只有在使用Cata的eat方法时才会用到Cat,这样耦合度就降低了