1 回答
TA贡献1821条经验 获得超4个赞
Golang 使用组合。
对象组合:使用对象组合代替继承(在大多数传统语言中使用)。对象组合意味着一个对象包含另一个对象(比如对象 X)的对象,并将对象 X 的职责委托给它。这里不是覆盖函数(如在继承中),而是将函数调用委托给内部对象。
接口组合:在接口组合中,接口可以组合其他接口,并使在内部接口中声明的所有方法集成为该接口的一部分。
现在具体回答你的问题,你这里说的是界面组成。您还可以在此处查看代码片段:https ://play.golang.org/p/fn_mXP6XxmS
检查以下代码:
播放器2.go
package game
type confPlayer2 interface {
Set(string, int) bool
Move(string) bool
}
func Play(conf confPlayer2) string {
// code for Player2, not the same as Player1.
}
播放器1.go
package game
type confPlayer1 interface {
confPlayer2
Initialize() bool
}
func Play(conf confPlayer1) string {
// code for Player1
}
在上面的代码片段中,confPlayer1接口中包含了接口confPlayer2,除了Initialize函数只是confPlayer1的一部分。
现在你可以为播放器 2 使用接口 confPlayer2,为播放器 1 使用 confPlayer1。请参阅下面的代码片段:
播放器.go
package game
type Player struct{
Name string
...........
...........
}
func (p Player) Set(){
.......
.......
}
func (p Player) Move(){
........
........
}
func Play(confPlayer2 player){
player.Move()
player.Set()
}
- 1 回答
- 0 关注
- 102 浏览
添加回答
举报