【Golang系列】-通过接口实现OCP设计原理
2022-03-19
通过接口实现OCP设计原理
开闭原则(open-closed-principle)常缩写:OCP,虽然go不是面向对象语言,但是也可以模拟实现,对扩展是开放,对修改是关闭。
实例:
package main
import "fmt"
//定义一个pet接口有eat和sleep两个方法
type Pet interface {
eat()
sleep()
}
//定义一个dog结构体
type Dog struct {
name string
age int
}
//定义一个cat结构体
type Cat struct {
name string
age int
}
//dog实现接口方法
func (dog Dog) eat() {
fmt.Println("dog eat...")
}
func (dog Dog) sleep() {
fmt.Println("dog sleep...")
}
//cat实现接口方法
func (cat Cat) eat() {
fmt.Println("cat eat...")
}
func (cat Cat) sleep() {
fmt.Println("cat sleep...")
}
//定义一个Person结构体
type Person struct {
name string
}
//为person添加一个宠物方法
func (per Person) care(pet Pet) {
pet.eat()
pet.sleep()
}
func main() {
dog := Dog{}
cat := Cat{}
per := Person{}
per.care(dog)
per.care(cat)
}
结果:
dog eat...
dog sleep...
cat eat...
cat sleep...
使用这种方法,可以很好的解耦,实现软件设计的OCP原则,