• 作者:老汪软件技巧
  • 发表时间:2023-12-25 13:00
  • 浏览量:

文章目录

接口实现OCP原则

OCP: Open- 开闭原则,对扩展是开发的,对修改是关闭的。

实例

package main
import "fmt"
type Pet interface {
	eat()
	sleep()
}
type Dog struct {
}
type Cat struct {
}
func (dog *Dog) eat() {
	fmt.Println("dog eating...")
}
func (dog *Dog) sleep() {
	fmt.Println("dog sleeping...")
}
func (cat *Cat) eat() {
	fmt.Println("cat eating...")
}
func (cat *Cat) sleep() {
	fmt.Println("cat sleeping...")
}
type Person struct {
}
func (p *Person) care(pet Pet) {
	pet.eat()
	pet.sleep()
}
func main() {
	var p = Person{}
	p.care(&Cat{})
	p.care(&Dog{})
}

这里定义了三个结构体:, Dog, Cat 一个接口Pet,同时Dog和Cat都实现了Pet接口。有一个care方法(养宠物)。

任何实现了Pet接口的类型都可以作为care的参数进行使用(可以care任意的Pet)。

假设有一个Pig也实现了Pet接口,则可以p.care(&Pig{})这样使用。

type Pig struct {
}
func (pig *Pig) eat() {
	fmt.Println("pig eating...")
}
func (pig *Pig) sleep() {
	fmt.Println("pig sleeping...")
}
func main() {
    ...
    p.care(&Pig{})