命令模式
定义
将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式。
角色
1.命令抽象接口
2.请求结构体
例子
一个盒子上的按钮执行
//命令抽象接口
type Command interface {
Execute()
}
//请求结构体
type Box struct {
buttion1 Command
buttion2 Command
}
//抽象请求对象
func NewBox(buttion1, buttion2 Command) *Box {
return &Box{
buttion1: buttion1,
buttion2: buttion2,
}
}
//封装命令执行函数
func (b *Box) PressButtion1() {
b.buttion1.Execute()
}
//封装命令执行函数
func (b *Box) PressButtion2() {
b.buttion2.Execute()
}
总结
此模式主要是对实际的命令执行进行抽象与请求解耦,请求逻辑封装成对象可以改变,当请求逻辑变化后不影响执行逻辑。