网站备案需要什么东西,网页设计学习教程,做网站类的书本信息,媒体网站开发文章目录 Golang接口实现OCP原则实例 Golang接口实现OCP原则
OCP#xff1a; Open-Closed Principle 开闭原则#xff0c;对扩展是开发的#xff0c;对修改是关闭的。
实例
package mainimport fmttype Pet interface {eat()sleep()
}
type Dog struct {
}
t… 文章目录 Golang接口实现OCP原则实例 Golang接口实现OCP原则
OCP Open-Closed Principle 开闭原则对扩展是开发的对修改是关闭的。
实例
package mainimport fmttype 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{})这样使用。
type Pig struct {
}
func (pig *Pig) eat() {fmt.Println(pig eating...)
}
func (pig *Pig) sleep() {fmt.Println(pig sleeping...)
}
func main() {...p.care(Pig{})