当前位置: 首页 > news >正文

免费个人网站制作设计好网站制作

免费个人网站制作设计,好网站制作,网站开发 专有名词,微信怎么做公众号一、简介 命令模式:将请求(命令)封装为一个对象,这样可以使用不同的请求参数化其他对象(将不同请求依赖注入到其他对象),并且能够支持请求(命令)的排队执行、记录日志、…

一、简介

命令模式:将请求(命令)封装为一个对象,这样可以使用不同的请求参数化其他对象(将不同请求依赖注入到其他对象),并且能够支持请求(命令)的排队执行、记录日志、撤销等(附加控制)功能。

二、优点

  • 动作封装
  • 解耦发送者跟接受者
  • 可扩展性
  • 简化和集中错误处理
  • 支持撤销和重做功能
  • 易于实现组合命令

三、UML类图

请添加图片描述

四、案例

家里有很多房间,有卧室和厨房等,用一套灯光管理系统同一管理所有灯的开关。

package mainimport "fmt"type Light interface {On()Off()
}type KitchenLight struct {
}func NewKitchenLight() *KitchenLight {return &KitchenLight{}
}func (*KitchenLight) On() {fmt.Println("Kitchen light is on")
}func (*KitchenLight) Off() {fmt.Println("Kitchen light is off")
}type LivingRoomLight struct {
}func NewLivingRoomLight() *LivingRoomLight {return &LivingRoomLight{}
}func (*LivingRoomLight) On() {fmt.Println("Living room light is on")
}func (*LivingRoomLight) Off() {fmt.Println("Living room light is off")
}type Command interface {Execute()Undo()
}type LightOnCommand struct {Lights []Light
}func NewLightOnCommand(lights []Light) LightOnCommand {return LightOnCommand{Lights: lights}
}func (loc *LightOnCommand) Execute() {for _, light := range loc.Lights {light.On()}
}func (loc *LightOnCommand) Undo() {for _, light := range loc.Lights {light.Off()}
}type LightOffCommand struct {Lights []Light
}func NewLightOffCommand(lights []Light) LightOffCommand {return LightOffCommand{Lights: lights}
}func (loc *LightOffCommand) Execute() {for _, light := range loc.Lights {light.Off()}
}func (loc *LightOffCommand) Undo() {for _, light := range loc.Lights {light.On()}
}func main() {kitchenLight := NewKitchenLight()livingRoomLight := NewLivingRoomLight()lightOnCommand := NewLightOnCommand([]Light{kitchenLight, livingRoomLight})lightOnCommand.Execute()lightOnCommand.Undo()lightOffCommand := NewLightOffCommand([]Light{kitchenLight, livingRoomLight})lightOffCommand.Execute()lightOffCommand.Undo()
}

五、对比

命令模式与策略模式的区别:在策略模式中,不同的策略具有相同的目的、不同的实现、互相之间可以替换。比如,BubbleSort、SelectionSort都是为了实现排序的,只不过一个是用冒泡排序算法来实现的,另一个是用选择排序算法来实现的。而在命令模式中,不同的命令具有不同的目的,对应不同的处理逻辑,并且互相之间不可替换。

http://www.yayakq.cn/news/897948/

相关文章:

  • 摄影网站采用照片做宣传_版权费是多少?做网站图片路径做缓存吗
  • 怎样做分销网站网站建设无法访问网站
  • 怎么用手机做网站平台免费版网站建设合同
  • 珠海建设工程监督站网站个人网站建设书
  • 温州微网站开发开发公司土地评估费计入土地价款
  • 想学网站建设 如何开始朝天门户网
  • 网站建设新闻+常识阳江网胜
  • 怎么做区块链媒体网站腾讯会议30人以上收费
  • 网站开发销售提成wordpress+enter主题
  • 西安网站建设动力无限快速搭建网站vue
  • 重庆网站建设c网站维护具体工作内容
  • 南昌 定制网站办公系统管理软件
  • 绍兴网站定制公司手机建网站免费域名空间
  • 济南正规网站建设公司推广app
  • ps网站设计怎么做网易暴雪最新消息
  • 请别人做网站大概要多少钱wordPress登不上数据库
  • 学校 网站建设 招标刘洋网站建设 够完美
  • 网站建设带数据库模板网站备案表格样本
  • 新余网站制作西安营销网站建设
  • 模板出售网站源码建设网站的要点
  • 有什么免费的网站php做网站的公司有哪些
  • 无锡网站策划公司青岛网站上排名
  • 网站建设与制作设计公司wordpress 同城小程序
  • 企业网站建设设置那些栏目网站开发 平台建设
  • 南美洲网站后缀微信学校网站模板
  • 怀柔手机网站建设德国网站的后缀名
  • 网站建设课设总结在线做免费网站有哪些
  • 营销型网站方案ppt如何对网站ftp进行上传
  • 网站建设案例 优帮云网页布局设计类型
  • 广州网站建设支付做移动网站优化优