行为模式涉及到算法和对象间职责的分配。
COMMAND:将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤消操作。
package behaviour.command;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2002</p>
* <p>Company: The9.com</p>
* @author Jerry Shen
* @version 0.5
*/
public interface Command {
public abstract void execute();
}
package behaviour.command;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2002</p>
* <p>Company: The9.com</p>
* @author Jerry Shen
* @version 0.5
*/
public class TestCommand {
public TestCommand() {
}
public static void main(String[] args) {
Light testLight = new Light();
LightOnCommand testLOC = new LightOnCommand(testLight);
LightOffCommand testLFC = new LightOffCommand(testLight);
Switch testSwitch = new Switch(testLOC, testLFC);
testSwitch.flipUp( );
testSwitch.flipDown( );
Fan testFan = new Fan( );
FanOnCommand foc = new FanOnCommand(testFan);
FanOffCommand ffc = new FanOffCommand(testFan);
Switch ts = new Switch( foc,ffc);
ts.flipUp( );
ts.flipDown( );
}
}
//---------- Class Fan ------------------------------
class Fan {
public void startRotate() {
System.out.println("Fan is Rotating now !");
}
public void stopRotate() {
System.out.println("Fan is stop now !");
}
}
//-----------------------------------------------------
//---------- Class Light ----------------------------
class Light {
public void turnOn() {
System.out.println("Light is on now !");
}
public void turnOff() {
System.out.println("Light is off now !");
}
}
//-----------------------------------------------------
//---------- Class Switch ---------------------------
class Switch {
private Command UpCommand, DownCommand;
public Switch (Command Up, Command Down) {
UpCommand = Up;
DownCommand = Down;
}
void flipUp() {
UpCommand.execute();
}
void flipDown() {
DownCommand.execute();
}
}
//-----------------------------------------------------
//---------- Class LightOnCommand -------------------
class LightOnCommand implements Command {
private Light myLight;
public LightOnCommand (Light L) {
myLight = L;
}
public void execute() {
myLight.turnOn();
}
}
//-----------------------------------------------------
//---------- Class LightOffCommand ------------------
class LightOffCommand implements Command {
private Light myLight;
public LightOffCommand (Light L) {
myLight = L;
}
public void execute() {
myLight.turnOff();
}
}
//-----------------------------------------------------
//---------- Class FanOnCommand ---------------------
class FanOnCommand implements Command {
private Fan myFan;
public FanOnCommand (Fan F) {
myFan = F;
}
public void execute() {
myFan.startRotate();
}
}
//-----------------------------------------------------
//---------- Class FanOffCommand ---------------------
class FanOffCommand implements Command {
private Fan myFan;
public FanOffCommand (Fan F) {
myFan = F;
}
public void execute() {
myFan.stopRotate();
}
}
//-----------------------------------------------------