Golang语言是面向接口语言,并非面向对象语言。为了方便使用,有了接口:https://blog.csdn.net/Vickers_xiaowei/article/details/104630797
封装
import包封装隔离,大小写实现封装,小写对象外不可见,大写对象外可见。
type Human struct{
name string
}
func(h* Human)SetVal(name string){
h.name=name
}
大写SetVal类似于其它语言的public属性,name则类似于private属性。
继承
type Human struct{
name string
}
type Chinese struct{
human *Human
language string
}
多态
type Human interface {
Speak()
}
type Chinese struct{
name string
}
func(c*Chinese)Speak(){
fmt.Println("Chinese speak:",c.name)
}
type American struct {
name string
}
func(a*American)Speak(){
fmt.Println("Chinese speak:",a.name)
}
单一功能原则
1.就是一个类越复杂,可能被复用的可能性越小
2.类越复杂,变动代码可能会有意想不到的错误。
有一个类T负责两个不同的职责:职责P1和职责P2。当因为职责P1的需求发生改变而需要修改类T的时候,有可能会导致原本运行正常的职责P2功能发生故障。
遵循单一职责原则,分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1的时候,不会使职责P2发生故障风险。同理,当修改T2的时候,也不会使职责P1发生故障风险。
开闭原则
对于扩展是开放的,对于修改是封闭的。
里式替换原则
继承类可以去替换基类,调用基类的方法。
- 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
- 子类中可以增加自己特有的方法。
- 覆盖或实现父类的方法时输入参数可以被放大
- 覆盖或实现父类的方法时输入参数可以被缩小
接口隔离原则
客户端不应该依赖它不需要的接口。
一个类对另一个类的依赖应该建立在最小的接口上。
建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。
你是否觉得ISP跟之前的单一职责原则很相似?
其实不然。其一,单一职责原则原注重的是职责;而接口隔离原则注重对接口依赖的隔离。其二,单一职责原则主要是约束类,其次才是接口和方法,它针对的是程序中的实现和细节;而接口隔离原则主要约束接口接口,主要针对抽象,针对程序整体框架的构建。
依赖反转原则
1、上层模块不应该依赖底层模块,它们都应该依赖于抽象。
2、抽象不应该依赖于细节,细节应该依赖于抽象。
https://www.jianshu.com/p/c3ce6762257c