命令模式 将“请求”封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。
package com.zaxk.study.pattern;
/**
* 命令模式
* Created by ZhuXu on 2017/11/11 0011.
*/
public class CommandTest {
public static void main(String[] args) {
Weapon sword = new Sword();
Weapon bow = new Bow();
Weapon staff = new Staff();
Command swordAttack = new NormalAttackCommand(sword);
Command swordSkilll = new SkillAttackCommand(sword);
Command bowAttack = new NormalAttackCommand(bow);
Command bowSkilll = new SkillAttackCommand(bow);
Command statffAttack = new NormalAttackCommand(staff);
Command staffSkilll = new SkillAttackCommand(staff);
Role warrior = new Role("战士", swordAttack, swordSkilll);
Role hunter = new Role("猎人", bowAttack, bowSkilll);
Role mage = new Role("法师", statffAttack, staffSkilll);
warrior.attack();
hunter.attack();
mage.attack();
warrior.skill();
hunter.skill();
mage.skill();
warrior.defence();
hunter.escape();
mage.escape();
}
}
/**
* 命令
* 命令模式:Command
*/
interface Command {
void execute();
}
/**
* 攻击命令
* 命令模式:Command
*/
interface AttackCommand extends Command {
void attack();
default void execute() {
attack();
}
}
/**
* 防御命令
* 命令模式:ConcreteCommand
*/
class DefenseCommand implements Command {
public void execute() {
System.out.println("我扛着,你们快输出!");
}
}
/**
* 逃跑命令
* 命令模式:ConcreteCommand
*/
class EscapeCommand implements Command {
public void execute() {
System.out.println("打个毛啊,溜了溜了!");
}
}
/**
* 普通攻击命令
* 命令模式:ConcreteCommand
*/
class NormalAttackCommand implements AttackCommand {
Weapon weapon;
NormalAttackCommand(Weapon weapon) {
this.weapon = weapon;
}
@Override
public void attack() {
weapon.attack();
}
}
/**
* 技能攻击命令
* 命令模式:ConcreteCommand
*/
class SkillAttackCommand implements AttackCommand {
Weapon weapon;
SkillAttackCommand(Weapon weapon) {
this.weapon = weapon;
}
@Override
public void attack() {
weapon.skill();
}
}
/**
* 武器
* 命令模式:Receiver
*/
abstract class Weapon {
abstract void attack();
abstract void skill();
}
/**
* 剑
* 命令模式:ConcreteReceiver
*/
class Sword extends Weapon {
@Override
void attack() {
System.out.println("我砍!");
}
@Override
void skill() {
System.out.println("星爆气流斩!");
}
}
/**
* 弓箭
* 命令模式:ConcreteReceiver
*/
class Bow extends Weapon {
@Override
void attack() {
System.out.println("我射!");
}
@Override
void skill() {
System.out.println("万箭齐发!");
}
}
/**
* 法杖
* 命令模式:ConcreteReceiver
*/
class Staff extends Weapon {
@Override
void attack() {
System.out.println("我打!");
}
@Override
void skill() {
System.out.println("神灭斩!");
}
}
/**
* 角色
* 命令模式:Invoker
*/
class Role {
private String name;
private Command attackCommand, skillCommand, defenseCommand, escapeCommand;
Role(String name, Command attackCommand, Command skillCommand) {
this.name = new StringBuffer(name).append(":").toString();
this.attackCommand = attackCommand;
this.skillCommand = skillCommand;
defenseCommand = new DefenseCommand();
escapeCommand = new EscapeCommand();
}
public void attack() {
System.out.print(name);
attackCommand.execute();
}
public void skill() {
System.out.print(name);
skillCommand.execute();
}
public void defence() {
System.out.print(name);
defenseCommand.execute();
}
public void escape() {
System.out.print(name);
escapeCommand.execute();
}
}
分享到:
相关推荐
Java设计模式课件命令模式.pptx
目录: 前 言 第一部分 大旗不挥,谁敢冲锋——热身篇 第1章 单一职责原则 1.1 我是“牛”类,我可以担任多职吗 1.2 绝杀技,打破你的传统思维 1.3 我单纯,所以我快乐 1.4 最佳实践 ...附录:23个设计模式
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段...
java设计模式之命令模式,通过实际生活例子说明命令模式的原理
本系统基于六种设计模式,运用到的设计模式有备忘录模式,简单工厂模式,迭代器模式,状态模式,模版方法模式,单例模式。 具体实现过程、UML类图以及实现效果详见如下项目说明地址: ... 该系统为绘图系统,该系统通过...
计算机后端-Java-图解java设计模式104 命令模式(4)-Jdbc.avi
设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:...
Java设计模式之命令模式/Java函数式编程 笔记
java常用设计模式-命令模式
计算机后端-Java-图解java设计模式102 命令模式(2.avi
计算机后端-Java-图解java设计模式103 命令模式(3.avi
设计模式--命令模式java例子
计算机后端-Java-图解java设计模式101 命令模式(1).avi
计算机后端-Java-图解java设计模式105 命令模式(5).avi
72-Java设计模式 命令模式1
Java 23种设计模式18命令模式 .pdf
这是JAVA设计模式中属于行为模式的部分,包括Template(模板模式)、Chain of Responsibility(责任链模式)、Memento(纪念品模式)、Mediator(中介模式)、Strategy(策略模式)、State 、Observer(观察者模式)、Visitor...
总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元...
java设计模式示例 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。 行为型...
设计模式 java 命令模式