命令模式
命令接口
package command
type command interface {
Execute()
}
命令执行者
package command
func NewSystem() *system {
return &system{}
}
func (s *system) OpenFile() {
fmt.Println("打开记事本文件")
}
func (s *system) EditFile() {
fmt.Println("编辑文件")
}
func (s *system) SaveFile() {
fmt.Println("保存文件")
}
func (s *system) CloseFile() {
fmt.Println("关闭文件")
}
编辑命令
package command
type edit struct {
sys *system
}
func NewEdit(sys *system) command {
return &edit{sys: sys}
}
func (e *edit) Execute() {
e.sys.OpenFile()
e.sys.EditFile()
e.sys.SaveFile()
e.sys.CloseFile()
}
查看命令
package command
type search struct {
sys *system
}
func NewSearch(sys *system) command {
return &search{sys: sys}
}
func (s *search) Execute() {
s.sys.OpenFile()
s.sys.CloseFile()
}
命令发出者
package command
import "fmt"
type invoke struct {
commands []command
}
func NewInvoke() *invoke {
return &invoke{
commands: make([]command, 0),
}
}
func (i *invoke) AddCommand(cmd command) {
i.commands = append(i.commands, cmd)
}
func (i *invoke) Do() {
for _, v := range i.commands {
fmt.Println("**********************************")
if v == nil {
return
}
v.Execute()
}
}
测试文件
package command
func TestCommand(t *testing.T) {
sys := NewSystem()
e := NewEdit(sys)
s := NewSearch(sys)
p := NewInvoke()
p.AddCommand(e)
p.AddCommand(s)
p.Do()
}
原文地址:http://www.cnblogs.com/mathsmouse/p/16784523.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性