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

网站建设有什么费用产品经理培训哪个机构好

网站建设有什么费用,产品经理培训哪个机构好,设计感十足的网站,wordpress 无法登录界面二十二、Command模式:命令也是类 一个类调用某方法,虽然调用结果会反映在对象的状态中,但不会留下工作的历史记录。 若有一个类表示“请进行这项工作”的“命令”,每一项想做的工作就不再是“方法的调用”这种动态处理了,而是一个表示命令的类的实例,即可以用“物”来表…

二十二、Command模式:命令也是类

一个类调用某方法,虽然调用结果会反映在对象的状态中,但不会留下工作的历史记录。
若有一个类表示“请进行这项工作”的“命令”,每一项想做的工作就不再是“方法的调用”这种动态处理了,而是一个表示命令的类的实例,即可以用“物”来表示。
想管理工作的历史记录,只需管理这些实例的集合即可,且还可以随时再次执行过去的命令,或是将多个过去的命令整合为一个新命令并执行。
在设计模式中,称这样的“命令”为Command模式。
Command有时也被称为事件(event)。它与“事件驱动编程”中的“事件”是一样的意思。当发生点击鼠标、按下键盘按键等事件时,可以先将这些事件作成实例,然后按照发生顺序放入队列中。接着,再依次去处理它们。

示例程序
是一个画图软件,它的功能很简单,即用户拖动鼠标时程序会绘制出红色圆点,点击clear按钮后会清除所有的圆点。
用户每拖动一次鼠标,应用程序都会为“在这个位置画一个点”这条命令生成一个DrawCommand类的实例。
只要保存了这条命令,以后有需要时就可以重新绘制。

示例程序的运行结果

在这里插入图片描述

示例程序类图

在这里插入图片描述

Command

package command;public interface Command {public abstract void execute();
}

MacroCommand

package command;import java.util.Stack;
import java.util.Iterator;public class MacroCommand implements Command {// 命令的集合// 虽然这里也可以使用java.util.ArrayList类型,但为了能轻松地实现undo方法,还是决定使用java.util.Stack类型private Stack commands = new Stack();// execute方法应该进行什么处理呢?// 既然要运行多条命令,那么只调用commands字段中各个实例的execute方法不就可以了吗?这样,就可以将MacroCommand自己保存的所有 Command全部执行一遍。// 不过,如果while循环中要执行的 Command又是另外一个MacroCommand类的实例,该实例中的execute方法也是会被调用的。因此,最后的结果就是所有的Command全部都会被执行。// 执行public void execute() {Iterator it = commands.iterator();while (it.hasNext()) {((Command)it.next()).execute();}}// 添加命令public void append(Command cmd) {// 防止不小心将自己(this)添加进去,否则execute方法将会陷入死循环if (cmd != this) {// java.util.Stack类的push方法,它会将元素添加至java.util.Stack类的实例的末尾commands.push(cmd);}}// 删除最后一条命令public void undo() {if (!commands.empty()) {// java.util.Stack类的pop方法,它会将push方法添加的最后一条命令取出来,并从Stack类的实例中移除commands.pop();}}// 删除所有命令public void clear() {commands.clear();}
}

DrawCommand

package drawer;import command.Command;
import java.awt.Point;public class DrawCommand implements Command {// 绘制对象protected Drawable drawable;// 绘制位置private Point position;// 构造函数// 接收两个参数:Drawable的实现类,Point类,分别保存在drawable字段和position字段中。它的作用是生成“在这个位置绘制点”的命令。public DrawCommand(Drawable drawable, Point position) {this.drawable = drawable;this.position = position;}// 执行public void execute() {drawable.draw(position.x, position.y);}
}

Drawable

package drawer;public interface Drawable {public abstract void draw(int x, int y);
}

DrawCanvas

package drawer;import command.*;import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class DrawCanvas extends Canvas implements
http://www.dtcms.com/wzjs/428984.html

相关文章:

  • 学做电商的网站seo范畴有哪些
  • 孟州网站国产长尾关键词拘挖掘
  • 网站地图怎么做_百度云搜索引擎网站
  • 做毕业设计免费网站建设怎么优化一个网站关键词
  • 做竞猜网站犯法吗长沙百度seo代理
  • app网站建设制作seo排名点击首页
  • 西安网站建设是什么bt磁力搜索引擎
  • 网站上线需要怎么做seo优化搜索推广
  • 西安网站建设服务商vivo应用商店
  • 外卖网站开发背景外贸网站推广平台有哪些
  • 一级av做爰片不卡免费网站什么公司适合做seo优化
  • 网站制作过程合理步骤是什么网站建设加推广优化
  • 网络工程师工资上海关键词优化按天计费
  • 信息技术九年级上册网站咋做建一个企业网站多少钱
  • 手机网站wap搜索引擎优化的报告
  • 北京大兴专业网站建设公司东莞海外网络推广
  • 网站怎么做背景不变页面滑动上海搜索排名优化
  • 佛教网站大全网百度关键词查询排名怎么查
  • 成都制作网站app推广是什么意思
  • wordpress个人模板关键词自助优化
  • 做外贸网站服务器要选择哪里的百度账户登录
  • 聊城做手机网站建设福建百度seo排名点击软件
  • 手机做直播官方网站拉新app推广平台排名
  • 南城微信网站建设上海今天最新发布会
  • 深圳个人网站建设厦门网站seo哪家好
  • 做网站如何语音域名查询网站入口
  • 长春微信做网站长沙做搜索引擎的公司
  • 手机网站开发公司电话cps推广联盟
  • 全国首批9所重点马院网站建设seo优化范畴
  • 可以做微网站的第三方平台seo课程培训机构