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

网站开发心路历程wordpress调用分类栏目

网站开发心路历程,wordpress调用分类栏目,个性定制网站,wordpress 添加标签插件命令模式 将“请求”封装成对象#xff0c;以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。 模型说明 触发者类负责对请求进行初始化#xff0c;其中必须包含一个成员变量来存储对于命令对象的引用。触发命令#xff0c;而不同接受者直接…命令模式 将“请求”封装成对象以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。 模型说明 触发者类负责对请求进行初始化其中必须包含一个成员变量来存储对于命令对象的引用。触发命令而不同接受者直接发送请求。注意发送者并不负责创建命令对象它通常会通过构造函数从客户端处获得预先生成的命令。 命令接口通常仅声明一个执行命令的方法。 具体命令会实现各种类型的请求。具体命令自身并不完成工作而是会将调用委派给一个业务逻辑对象。但为了简化代码这些类可以进行合并。 接收对象执行方法所需的参数可以声明为具体命令的成员变量。可以将命令对象设为不可变仅允许通过构造函数对这些成员变量进行初始化。 接收者类包含部分业务逻辑。几乎任何对象都可以作为接收者。绝大部分命令只处理如何将请求传递到接收者的细节接收者自己会完成实际的工作。 客户端会创建并配置具体命令对象。客户端必须将包括接收者实体在哪的所有请求参数传递给命令的构造函数。此后生成的命令就可以与一个或多个发送者相关联。 优缺点 1.优点 单一职责原则。 你可以解耦触发和执行操作的类。*开闭原则。*你可以在不修改已有客户端代码的情况下在程序中创建新的命令。你可以实现撤销和恢复功能。你可以实现操作的延迟执行。你可以将一组简单命令组合成一个复杂命令。 2.缺点 代码可能会变得更加复杂 因为你在发送者和接收者之间增加了一个全新的层次。 使用场景 如果你需要通过操作来参数化对象 可使用命令模式。如果你想要将操作放入队列中、 操作的执行或者远程执行操作 可使用命令模式。如果你想要实现操作回滚功能 可使用命令模式。 参考代码 // command.go // 命令接口 type command interface {execute()undo() }// concrete_command.go // 具体命令 type light struct{}func (l *light) label() string {return light }func (l *light) on() {fmt.Println(light is on) }func (l *light) off() {fmt.Println(light is off) }type lightOnCommand struct {l *light }func (c *lightOnCommand) execute() {c.l.on() }func (c *lightOnCommand) undo() {c.l.off() }type lightOffCommand struct {l *light }func (c *lightOffCommand) execute() {c.l.off() }func (c *lightOffCommand) undo() {c.l.on() }const (labelNoCommand on_command )type noCommand struct{}func (n *noCommand) execute() {fmt.Println(no command executed) }func (n *noCommand) undo() {fmt.Println(no command undo) } // invoker.go // 触发者 type remoteController struct {onCommands map[string]commandoffCommands map[string]commandpreCmd command }func createSimpleRemoteController() *remoteController {rc : remoteController{onCommands: make(map[string]command),offCommands: make(map[string]command),}// 这里处理为了没有找到插槽时的表现noCMD : new(noCommand)rc.onCommands[labelNoCommand] noCMDrc.offCommands[labelNoCommand] noCMD// 初始化的时候没有上一次点击的按钮所以使用 noCommandrc.preCmd noCMDreturn rc }func (rc *remoteController) setCommand(label string, onCMD, offCMD command) {rc.onCommands[label] onCMDrc.offCommands[label] offCMD }func (rc *remoteController) onButtonWasPressed(label string) {cmd : rc.onCommands[label]if cmd nil {cmd rc.onCommands[labelNoCommand]}cmd.execute()rc.preCmd cmd }func (rc *remoteController) offButtonWasPressed(label string) {cmd : rc.offCommands[label]if cmd nil {cmd rc.offCommands[labelNoCommand]}cmd.execute()rc.preCmd cmd }func (rc *remoteController) undo() {rc.preCmd.undo() } // main.go // 客户端 func main() {simpleLight : new(light)lightOnCmd : lightOnCommand{l: simpleLight}lightOffCmd : lightOffCommand{l: simpleLight}rc : createSimpleRemoteController()rc.setCommand(simpleLight.label(), lightOnCmd, lightOffCmd)rc.onButtonWasPressed(simpleLight.label())rc.offButtonWasPressed(simpleLight.label())rc.undo()rc.onButtonWasPressed(coffeeMachine) } 输出 light is on light is off light is on no command executed
http://www.hkea.cn/news/14362797/

相关文章:

  • 网站建设仟首先金手指15做个兼职网站设计
  • 面膜网站广告怎么做互联网平台名称设计图
  • 建设 网站协议范本无锡企业网站制作哪家比较好
  • 惠州网站seo排名优化广告平面设计用什么软件
  • 济宁网站建设制作设计微信引流推广怎么做
  • 阿里域名注册网站门户网站如何建设方案
  • 南昌网站建设哪家最好网页设计公司163企业邮箱
  • 网站建设安全措施国外的wordpress主题公园
  • flash个人网站欣赏png免费素材网站
  • 网站建设需要用到iis吗网站 实例
  • 广西城乡住房建设厅网站wordpress编辑器增加按钮
  • 南昌做建网站的国际热点新闻最新消息
  • 东阿网站制作城阳在线网站建设
  • 网站备案麻烦么网站建设微信端
  • 天河做网站服务专业做网站制作自助建站系统
  • html5网站首页代码好123设为主页
  • 从seo角度做网站流量东莞哪里的网站建设效果好
  • 宁波网站建设活动类似非小号的网站怎么做
  • 瑜伽 网站模板慈溪网站制作哪家最便宜
  • 注册网站建设公司wordpress single_cat_title
  • 验证码平台网站开发网站重定向过多
  • 徐州10年网站建设 推广公司公司自己做网站吗
  • 焦作住房和城乡建设厅网站快速排名教程
  • 腾讯云网站安全认证有合作社做网站得不
  • 辽宁营商环境建设网站公司域名注册步骤
  • 杭州集团公司网站建设建筑工程网教
  • 做网站要多少的服务器小外包公司
  • 一个简单的政务网站开发要多久百度关键词点击工具
  • 网站,商城,app 建设网站建设的相关书籍
  • 购物网站建设需要多少钱服务公司发展战略