Golang接口实现OCP原则

文章目录

Golang接口实现OCP原则

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

实例

go 复制代码
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{})
}

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

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

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

go 复制代码
type Pig struct {
}
func (pig *Pig) eat() {
	fmt.Println("pig eating...")
}
func (pig *Pig) sleep() {
	fmt.Println("pig sleeping...")
}
func main() {
    ...
    p.care(&Pig{})
相关推荐
xxwxx__9 分钟前
C++ list 深度解析:从使用原理到模拟实现
开发语言·c++·list
Chester_199919 分钟前
CSP202303C.LDAP
开发语言·c++·蓝桥杯·stl
奋斗吧程序媛28 分钟前
CSV文件导入功能
开发语言·javascript·ecmascript
evans在进步41 分钟前
Java 常用设计模式(二):装饰器、适配器、责任链、模板方法、策略与观察者
java·开发语言·设计模式
小雨笙笙1 小时前
C语言:指针
c语言·开发语言
旧梦95272 小时前
Java EnumMap 详解:原理、用法与实战
java·开发语言
snow@li3 小时前
Java:微服务项目与单体项目区别、市场占有率全景深度分析
java·开发语言·微服务
吴声子夜歌3 小时前
Java——性能和效率
java·开发语言
小鹿的周先生3 小时前
第四章-SpringAI-函数调用&ToolCalling
开发语言·人工智能·python
神仙别闹3 小时前
基于C++ MFC 实现的智慧公交系统
开发语言·c++·mfc