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

社交网站建设网站黄金网站app软件下载安装

社交网站建设网站,黄金网站app软件下载安装,怎么开店,网站建设项目设计报告一、简介 命令模式:将请求(命令)封装为一个对象,这样可以使用不同的请求参数化其他对象(将不同请求依赖注入到其他对象),并且能够支持请求(命令)的排队执行、记录日志、…

一、简介

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

二、优点

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

三、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/281056/

相关文章:

  • 做网站支持提现支付宝php学校网站系统
  • 网站做优化得话从哪里优化网络推广员的工作内容和步骤
  • 音乐网站建设价格6wordpress不能更新
  • 网站建设建站知识在线crm管理系统
  • 武进网站建设要多少钱wordpress 文章页幻灯
  • 江门市专业做网站公司做个网站要多少钱 一般
  • 大学生做网站免费好玩的网页游戏
  • 网站设计学习保定建站模板搭建
  • 一诺千金 网站建设wordpress建立移动站
  • 化妆品做的不好的网站wordpress个人网线
  • 自己做相册的网站wordpress idc模板
  • 湖南旅游网站开发汇通网做期货的网站做期货的网站
  • 网站建设好后的手续交接万江区网站建设公司
  • 上海一家做服饰包鞋穿上用品的网站第一ppt网站
  • dedecms公司网站怎么做wordpress模板开发
  • 个人可以做宣传片视频网站品牌建设是什么
  • 网站制作网站建设案例网站建设公司合肥
  • 知名网站制作服务网站没后台怎么修改类容
  • 我想克隆个网站 怎么做指点成金网发帖推广
  • 郑州正岩建设集团网站微信公众平台开发软件
  • 建设部一建注册网站简述你对于网站建设的认识
  • 网站设计 企业 济南网站建设服务合同印花税
  • 学生怎样建设网站vr全景网站怎么做
  • 如何获得网站后台密码免费的网络推广平台
  • 健身网站建设企业登记信息查询
  • 网站制作与发布杭州网站app开发公司
  • 做固定背景网站做面包网站
  • 黄冈网站排名最高上海人才信息网官网
  • cookie做网站访问量河西做网站的公司
  • 常州网站建设案例h5网站建设需要哪些资料