2020年8月7日星期五

无废话设计模式(18)行为型模式

0-前言

  命令模式定义(Command):

    将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化;

    对请求排队或记录请求日志,以及支持可撤销的操作;

1-实现

1-1、简单UML图

 

 

1-2、代码实现

//1、命令执行者(Receiver--小兔崽子)class Son{ //做饭 public void Cooking() {  System.out.println("小兔崽子乖乖做饭去了"); } //喂猪 public void FeedPigs() {  System.out.println("小兔崽子乖乖喂猪去了"); }}//2、命令抽象父类(Command)abstract class Command{ //设置命令执行者 protected Son son; public Command(Son _son) {  this.son = _son; } //执行命令 public abstract void Execute();}//2-1、具体命令A(做饭)class CommandCooking extends Command{ public CommandCooking(Son _son) {  super(_son); } //执行命令 @Override public void Execute() {  son.Cooking(); }}//2-2、具体命令B(喂猪)class CommandFeedpigs extends Command{ public CommandFeedpigs(Son _son) {  super(_son); } //执行命令 @Override public void Execute() {  son.FeedPigs(); }}//3、命令传达者(Invoker---老爹)class Father{ private Command command; //A、设置命令 public void setCommand(Command command) {  this.command = command; } //B、要求执行命令 public void Doing() {  command.Execute(); }

 

客户端

  Son son = new Son();  Command cooking = new CommandCooking(son);  Command feedpigs = new CommandFeedpigs(son);  Father father = new Father();  //做饭  father.setCommand(cooking);  father.Doing();  //喂猪  father.setCommand(feedpigs);  father.Doing();

 

运行结果

 

 

2-应用场景简单总结

1、当需要抽象出需要执行的动作以便参数化某个对象时;

2、当需要在不同的时候执行、排列、执行请求时;

3、当系统需要支持取消操作时;

4、当系统需要记录、修改日志时;

无废话设计模式(18)行为型模式亚马逊极致运营课程--姜涵2017年跨境出海社媒助力—暨首届社媒官方峰会米谷美国也开始征税了!这些卖家哭了……140w买家邮箱,带买家评论链接【评论-用户查邮箱】中国已成世界第二大货物贸易进口国和服务贸易进口国!怎么去西冲?食宿费用怎么样?西冲好玩吗?有什么好玩的项目?推荐西冲的旅游攻略?

没有评论:

发表评论