【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原则,