为了账号安全,请及时绑定邮箱和手机立即绑定

Golang的组合继承如何将Commands分派给正确的CommandHandler?

Golang的组合继承如何将Commands分派给正确的CommandHandler?

Go
慕雪6442864 2022-03-07 19:42:42
我想学习用 Go 编程,我决定作为一个宠物程序,我会为几个 CommandHandler 做一个简单的不同命令的调度程序(如果 CommandHandler 与它应该处理的命令同名。)我的问题是,当我想要一个 CommandHandlerManager 发布一个命令,该命令将被分派到正确的 CommandHandler 时,它告诉我我需要一个 HelloWorldCommand 的具体实现,因为 HelloWorldCommandHandler 没有实现 Command 接口。编译时的错误信息E:\Desktop\ManBear\golang\src>go run main.go# command-line-arguments.\main.go:71: cannot use cmdHandler (type HelloWorldCommandHandler) as type CommandHandler in array or slice literal:        HelloWorldCommandHandler does not implement CommandHandler (wrong type for Handle method)                have Handle(HelloWorldCommand)                want Handle(Command)我需要有人向我解释我做错了什么,我猜这意味着我应该为我的 HelloWorldCommandHandler 实现一个单独的func方法,仅用于接口,如下所示:func (ch HelloWorldCommandHandler) Handle(cmd Command) {    fmt.Println("HelloWorldCommandHandler handled the basic command with name --> " + cmd.GetName())}但它产生了更多与类型相关的错误。我正在尝试做的一个工作示例,并解释我如何以及为什么做错了,将不胜感激。
查看完整描述

1 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

的签名Handle必须完全func (ch HelloWorldCommandHandler) Handle(cmd Command) {实现接口。一个快速的解决方法是在你的函数开始时做一个类型断言来从你的)HandleHelloWorldCommandCommand

但我认为这可能是一个可能的设计问题的症状:如果多态是 on Command,也许命令应该自己处理/运行?也许Run() error在界面中有一个?


查看完整回答
反对 回复 2022-03-07
  • 1 回答
  • 0 关注
  • 186 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号