将命令分装成对象,传递给调用者,可以使请求调用者和请求接受者之间有效解耦!!!
package com.xul.commandmodel;
import java.time.Period;
/**
* 命令模式
*/
public class Commendmodel {
SuperFather obj = null;
public void executeCommand(){
obj.execute();
}
public SuperFather getObj() {
return obj;
}
public void setObj(SuperFather obj) {
this.obj = obj;
}
public static void main(String[] args) {
Commendmodel commendmodel = new Commendmodel();
People pro = new People();
PeopleEatFanCommand peopleEatFanCommand = new PeopleEatFanCommand();
peopleEatFanCommand.setPeo(pro);
PeopleRunCommand runCommand = new PeopleRunCommand();
runCommand.setPeo(pro);
PeopleSleepCommand sleepCommand = new PeopleSleepCommand();
sleepCommand.setPeo(pro);
commendmodel.setObj(peopleEatFanCommand);
commendmodel.executeCommand();
commendmodel.setObj(runCommand);
commendmodel.executeCommand();
commendmodel.setObj(sleepCommand);
commendmodel.executeCommand();
}
}
/*
* 超级父类
*/
interface SuperFather{
public void execute();
}
class People {
public void eatFan(){
System.out.println("eatFan");
}
public void sleep(){
System.out.println("sleep");
}
public void run(){
System.out.println("run");
}
}
class PeopleEatFanCommand implements SuperFather{
People peo = null;
public void setPeo(People peo) {
this.peo = peo;
}
@Override
public void execute() {
peo.eatFan();
}
}
class PeopleSleepCommand implements SuperFather{
People peo = null;
public void setPeo(People peo) {
this.peo = peo;
}
@Override
public void execute() {
peo.sleep();
}
}
class PeopleRunCommand implements SuperFather{
People peo = null;
public void setPeo(People peo) {
this.peo = peo;
}
@Override
public void execute() {
peo.run();
}
}