社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
可能有一些工厂模式的影子。
先来说一说接口是什么,
接口是方法声明的集合。任何类型的对象实现了在interface 接口中声明的全部方法,则表明该类型实现了该接口。
怎么理解呢?
接口里面就是未实现的方法,就是 方法名(参数列表)返回值类型
这种形式。
下一句可以这么理解,golang中的方法必须要有对象接收。
//结构体
type Cow struct {
Name string
}
//奶牛的处理方法
func (cow Cow) Method1() { //这就是方法,没有写参数和返回值是为了方便理解
fmt.Printf("%s:挤奶n",cow.Name)
}
type Factory interface {
//方法1,2,3
Method1()
Method2()
Method2()
}
//现在接口中有三个方法,所以必须写三个接收对象为Cow的方法
func (cow Cow) Method1() {
////
}
func (cow Cow) Method2() {
////
}
func (cow Cow) Method3() {
////
}
像这样,Cow也有了三个方法且与接口中的方法完全相同,Cow就实现了这个接口。
下面就开说一下怎么使用接口
package main
import "fmt"
type Factory interface {
//处理方法1
Method1()
}
//奶牛
type Cow struct {
Name string
}
//苹果
type Apple struct {
Name string
}
//奶牛的处理方法,实现接口
func (cow Cow) Method1() {
fmt.Printf("%s:挤奶n",cow.Name)
}
//苹果的处理方法,实现接口
func (a Apple) Method1() {
fmt.Printf("%s:切块n",a.Name)
}
func main() {
var fa Factory
cow := Cow{"奶牛"}
fa = cow
fa.Method1()
apple := Apple{"苹果"}
fa = apple
fa.Method1()
}
运行结果
将main函数单独分析
func main() {
var fa Factory
cow := Cow{"奶牛"}
fa = cow
fa.Method1()
apple := Apple{"苹果"}
fa = apple
fa.Method1()
}
我觉得重点在这一句fa = cow
,为什么要把结构体赋值给接口。
可以这样理解,接口Factory
就是一个工厂,赋值给接口就相当于向工厂里运送原料。比如说,把奶牛给工厂,工厂处理奶牛,怎么处理呢?
大致这样
情景一
工厂:接收到一个东西,是什么呢?哦,奶牛啊。我去找找我能不能处理。。。
诶,在这,我的小本本上记了怎么处理它,我先去忙了~
情景2
工厂:接收到一个东西,我看看,是橘子啊。我再去找找我能不能处理。。
呃。。。找遍了整个小本本,不能!拜拜了您嘞,还给你ㄟ( ▔, ▔ )ㄏ。
总的来说就这些啦(●ˇ∀ˇ●),有什么错误欢迎提出。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!