Go语言自学系列 | golang通过接口实现OCP设计原则
Posted COCOgsta
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言自学系列 | golang通过接口实现OCP设计原则相关的知识,希望对你有一定的参考价值。
视频来源:B站《golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]》
一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!
附上汇总贴:Go语言自学系列 | 汇总_COCOgsta的博客-CSDN博客
面向对象的可复用设计的第一块基石,便是所谓的“开-闭”原则(Open-Closed Principle,常缩写为OCP)。虽然,go不是面向对象语言,但是也可以模拟实现这个原则。对扩展是开放的,对修改是关闭的。
OCP设计原则实例
下面通过一个人养宠物的例子,来解释OCP设计原则。
定义一个宠物接口Pet
type Pet interface
eat()
sleep()
该接口有吃和睡两个方法。
定义个Dog结构体
type Dog struct
name string
age int
Dog实现接口方法
func (dog Dog) eat()
fmt.Println("dog eat...")
func (dog Dog) sleep()
fmt.Println("dog sleep...")
定义一个Cat结构体
type Cat struct
name string
age int
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()
最后测试一下
package main
import "fmt"
type Pet interface
eat()
sleep()
type Dog struct
name string
age int
type Cat struct
name string
age int
type Person struct
name string
func (dog Dog) eat()
fmt.Println("dog eat...")
func (dog Dog) sleep()
fmt.Println("dog sleep...")
func (cat Cat) eat()
fmt.Println("cat eat...")
func (cat Cat) sleep()
fmt.Println("cat sleep...")
func (per Person) care(pet Pet)
pet.eat()
pet.sleep()
func main()
dog := Dog
cat := Cat
per := Person
per.care(dog)
per.care(cat)
运行结果
[Running] go run "d:\\SynologyDrive\\软件开发\\go\\golang入门到项目实战\\goproject\\360duote.com\\pro01\\test.go"
dog eat...
dog sleep...
cat eat...
cat sleep...
以上是关于Go语言自学系列 | golang通过接口实现OCP设计原则的主要内容,如果未能解决你的问题,请参考以下文章
Go语言自学系列 | golang并发编程之WaitGroup实现同步