设计原则--接口隔离原则

73 阅读1分钟

1.前提知识

一个结构体想要使用另一个结构体的字段,绑定的函数等,那么可以有两种写法:
a. 嵌套继承【也就是匿名字段】 b.组合【也就是非匿名字段】

type person struct {}

type student struct {
   person //嵌套继承
}
type worker struct {
   //p person//值组合
   p *person //指针组合
}

2.接口隔离原则

接口隔离原则 就是尽量使用【组合的方式】,因为继承会无形之中继承到很多用不上的东西
尤其是不是知道父类在之前已经继承过什么东西,那将会使得当前子类得到更多无用的东西

这里的继承写法,组合写法貌似使用上没有什么区别,但他们在本质上是完全不同的概念
继承相当于手对于人,是一种强绑定的所属关系
组合相当于车对于人,是一种弱绑定的所属关系
能用绑定关系解决的问题,坚决不用绑定关系解决

package main

import "fmt"

type person struct{}

func (p *person) eat() {
   fmt.Println("人吃饭")
}
func (p *person) sleep() {
   fmt.Println("人吃睡觉")
}

type student struct {
   person //继承
}

func (s *student) study() {
   fmt.Println("学生学习")
}

type worker struct {
   //p person//值组合
   p *person //指针组合
}

func (w *worker) work() {
   fmt.Println("工人工作")
}
func main() {
   //接口隔离原则就是尽量使用【组合的方式】
   stu := student{}
   stu.study()
}