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

寻找哈尔滨网站建设今日广州新闻头条

寻找哈尔滨网站建设,今日广州新闻头条,wordpress游戏评测站睡觉,公司网站 仿站什么意思19.命令模式 首先就是我们的 Client 想要实现一个功能,于是它就创建了一个 Command, 为了方便调用将 Command 封装在了 Invoker 中,当我们想调用的时候,Invoker 会执行内部 Command 提供的方法, Receiver 接收到 Command 的请求&a…

19.命令模式
首先就是我们的 Client 想要实现一个功能,于是它就创建了一个 Command, 为了方便调用将 Command 封装在了 Invoker 中,当我们想调用的时候,Invoker 会执行内部 Command 提供的方法, Receiver 接收到 Command 的请求,为其提供底部支持。

多说无益,我将通过一个例子介绍命令模式。

实例
目前大部分的软件都支持用户自定义界面,比如说我们可以修改字体大小,背景颜色等。我们就以此为例。首先,写出两个类。

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Font {private String fontSize = "normal";
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BackGround {private String bgColor = "default color";
}

这是 Command, 修改字体大小和背景的类都继承于此。

public interface Command {void execute();
}

我们只是在类中获得一个 Font 类的引用,然后调用setFontSize() 方法对字体的大小进行设置。

@Data
@NoArgsConstructor
@AllArgsConstructor
public class LargeFontCommand implements Command {private Font font;@Overridepublic void execute() {font.setFontSize("large");}
}
@AllArgsConstructor
@NoArgsConstructor
@Data
public class NormalFontCommand implements Command {private Font font;@Overridepublic void execute() {font.setFontSize("Normal");}
}

background类的引用,调背景颜色

@NoArgsConstructor
@AllArgsConstructor
@Data
public class CustomBackGround implements Command {private BackGround backGround;private String color;public CustomBackGround(BackGround backGround){this.backGround = backGround;}@Overridepublic void execute() {backGround.setBgColor("Custom background");}
}
@AllArgsConstructor
@NoArgsConstructor
@Data
public class DefaultBackground implements Command {private BackGround backGround;@Overridepublic void execute() {backGround.setBgColor("default color");}
}

Invoker类存放命令

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Invoker {private List<Command> commands = new ArrayList<>();public void setCommand(int i,Command command){commands.add(i,command);}public void update(int i){commands.get(i).execute();}
}
public class CommandTest {public static void main(String[] args) {Font font = new Font();BackGround backGround = new BackGround();NormalFontCommand normalFontCommand = new NormalFontCommand(font);LargeFontCommand largeFontCommand = new LargeFontCommand(font);DefaultBackground defaultBackground = new DefaultBackground(backGround);CustomBackGround customBackGround = new CustomBackGround(backGround);Invoker invoker = new Invoker();invoker.setCommand(0,normalFontCommand);invoker.setCommand(1,largeFontCommand);invoker.setCommand(2,defaultBackground);invoker.setCommand(3,customBackGround);invoker.update(3);System.out.println(backGround.getBgColor());}
}

我们首先把所有的命令添加到了 Invoker , 然后直接调用 update() 方法就可以了。

这么做有什么好处呢?看的出来,可以将很多命令放进 Invoker , 它并不知道功能是如何实现的,它就像一个中介, Client 请求一个功能,它就将这个请求转给 Command 去实现。这种模式有很多的用途,比如说多功能遥控器,日志打印等。

还有一点不得不说的,我们可以使用宏命令,什么是宏命令呢?就是写一个 Command ,这个 Command 可以实现多个功能。比如说我们可以同时修改背景和颜色。

http://www.ds6.com.cn/news/22532.html

相关文章:

  • 綦江网站网站建设策划方案
  • 青岛网站seo推广模板建站和开发网站区别
  • 使用本地主机做网站百度网址大全简单版
  • 云南网站开发培训机构排行湘潭seo优化
  • 柳州建设网官方网站百度2018旧版下载
  • 网站建设工作落实情况google官方入口
  • 网站设计怎么做好东莞seo推广公司
  • 安徽省建设工程信息网公共服务平台互联网优化
  • 网站开发设计选题背景上海做关键词推广企业
  • 百度网站v2升级到v3怎么做安卓优化大师全部版本
  • 同一个wifi下_我如何用手机访问我用我电脑做服务器的网站无锡今日头条新闻
  • pc网站转wap网站济南优化seo公司
  • asp网站整站下载器十大放黄不登录不收费
  • 网站建设规划怎么写郑州百度推广托管
  • 手机网站封装用户体验seo软件代理
  • 做玻璃的网站社群营销的具体方法
  • 门户网站首页模板cpa广告联盟
  • wap网站建设公司网络营销方案如何写
  • 成都网站建设_创新互联对百度竞价排名的看法
  • 原创先锋 北京网站建设优化水平
  • c 鲜花店网站建设东莞seo建站投放
  • app制作软件公司seo推广有哪些
  • 企业网站系统建设毕业论文新乡seo优化
  • 广东省做农业网站销售的公司百度推广怎么联系
  • 如何做本地门户网站自助建站网
  • 网站字体样式网站seo报价
  • 做微信商城设计网站站长工具爱站
  • 大兴城乡建设委员会网站link友情买卖
  • 要运行 wordpress php无法安装网站优化包括对什么优化
  • 吉林省人民政府征兵办公室官网杭州seo整站优化