设计模式--之command模式笔记

本文通过一个追求情境的例子,详细解析了命令模式的设计理念及其在实际应用中的实现方式,包括如何使用抽象类或接口来扩展功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



设计模式的区分往往是在语义方面的区分

背景:男孩要追妹妹


妹妹命令男孩去做一些事情,,并希望做的事情将来能够扩展,,方法是建立一个Command抽象类或接口
Command模式:
可实现unDo功能,,方法就是建立一个历史记录


=========================================================
MM类

package com.linux_lihuafeng.command;

public class MM {

 private String name;

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 // MM命令Boy去做一些事
 public void order(Boy b) {
  Command c1 = new ShoppingCommand();
  b.addCommand(c1);
  Command c2 = new HugCommand();
  b.addCommand(c2);
  b.excuteCommands();
 }
}



=========================================================
Boy类

package com.linux_lihuafeng.command;

import java.util.ArrayList;
import java.util.List;

public class Boy  {

 private String name;


 private List<Command> commands = new  ArrayList<Command>();
 
 
 //这里还需要一个栈,,记录着执行过的命令,,在这没写
 
 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }
 
 public void pursue(MM mm) {
 }
 
 public void doSomeThing () {
  
 }

 public void addCommand(Command c) {

  this.commands.add(c);
 }

 public void excuteCommands() {

  for(Command c : commands) {
   c.execute();
  }
 }
 
 public void unDoCommands() {

  for(Command c : commands) {
   c.execute();
  }
 }

}

=========================================================
Command类

package com.linux_lihuafeng.command;

public abstract class Command {

 public abstract void execute();
 
 public abstract void unDo();
}

=========================================================
HugCommand类
 
package com.linux_lihuafeng.command;

public class HugCommand extends Command{

 @Override
 public void execute() {

  System.out.println("hug");
 }

 @Override
 public void unDo() {

  System.out.println("open your arms");
 }

}


=========================================================
ShoppingCommand类
 
package com.linux_lihuafeng.command;

public class ShoppingCommand extends Command{

 @Override
 public void execute() {
  System.out.println("zoo");
 }

 @Override
 public void unDo() {
  System.out.println("undo zoo");
 }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值