java_command_매크로 명령
이렇게 하는 목적은'하드 인코딩'을 줄이고 명령의 조합을 동태적으로 결정하여 사용에 더욱 유연하게 할 수 있다. 일반적으로 매크로 명령의 방법은 더욱 우아하고 비교적 적은 새로운 코드가 필요하다.
demo:
description: 무도회 장면을 모의할 때 조명과 음악이 필요합니다.
Light.java
public class Light {
private String name;
public Light(String name){
this.name = name;
}
public void on(){
System.out.println(name+" on");
}
public void off(){
System.out.println(name+" off");
}
}
Player.java
public class Player {
private String name;
public Player(String name){
this.name = name;
}
public void off(){
System.out.println(name+" off");
}
public void on(){
System.out.println(name+" on");
}
public void volumn(int num){
System.out.println(name+" : "+num);
}
public void cd(){
System.out.println(name+" cd");
}
public void dvd(){
System.out.println(name+" dvd");
}
}
Command.java
public interface Command {
void execute();
void undo();
}
LightOffCommand.java
public interface Command {
void execute();
void undo();
}
LightOnCommand.java
public class LightOnCommand implements Command{
private Light light;
public LightOnCommand(Light light){
this.light = light;
}
@Override
public void execute() {
light.on();
}
@Override
public void undo() {
light.off();
}
}
NoCommand.java
public class NoCommand implements Command{
@Override
public void execute() {
// TODO Auto-generated method stub
}
@Override
public void undo() {
// TODO Auto-generated method stub
}
}
PlayeroffCommand.java
public class PlayerOffCommand implements Command{
private Player player;
public PlayerOffCommand(Player player){
this.player = player;
}
@Override
public void execute() {
player.off();
}
@Override
public void undo() {
player.on();
player.cd();
player.volumn(11);
}
}
PlayerOnCommand.java
public class PlayerOnCommand implements Command{
private Player player;
public PlayerOnCommand(Player player){
this.player = player;
}
@Override
public void execute() {
player.on();
player.cd();
player.volumn(11);
}
@Override
public void undo() {
player.off();
}
}
MacroOffCommand.java
public class MacroOffCommand implements Command{
private Command[] commands;
public MacroOffCommand(Command[] commands){
this.commands = commands;
}
@Override
public void execute() {
for(int i=0;i
MacroOnCommand.java
public class MacroOnCommand implements Command{
private Command[] commands;
public MacroOnCommand(Command[] commands){
this.commands = commands;
}
@Override
public void execute() {
for(int i=0;i
RemoteControl.java
public class RemoteControl {
private Command[] onCommands;
private Command[] offCommands;
private Command undoCommand;
public RemoteControl(){
Command noCommand = new NoCommand();
onCommands = new Command[1];
offCommands = new Command[1];
this.undoCommand = noCommand;
for(int i=0;i
ControllerLoader.java
public class ControllerLoader {
public static void main(String[] args) {
Light light = new Light("party light");
Player player = new Player("party player");
Command partyLightOn = new LightOnCommand(light);
Command partyLightOff = new LightOffCommand(light);
Command partyPlayerOn = new PlayerOnCommand(player);
Command partyPlayerOff = new PlayerOffCommand(player);
Command[] onCommands = {partyLightOn,partyPlayerOn};
Command[] offCommands = {partyLightOff,partyPlayerOff};
Command macroOn = new MacroOnCommand(onCommands);
Command macroOff = new MacroOffCommand(offCommands);
RemoteControl remoteControl = new RemoteControl();
remoteControl.setCommand(0, macroOn, macroOff);
System.out.println(remoteControl);
remoteControl.onButtonPressed(0);
remoteControl.offButtonPressed(0);
remoteControl.undoButtonPressed();
}
}
실행 결과:
--- command begin --- [0]MacroOnCommand , MacroOffCommand party light on party player on party player cd party player : 11 party light off party player off party light on party player on party player cd party player : 11
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java_command_매크로 명령introduction: 이렇게 하는 목적은'하드 인코딩'을 줄이고 명령의 조합을 동태적으로 결정하여 사용에 더욱 유연하게 할 수 있다. 일반적으로 매크로 명령의 방법은 더욱 우아하고 비교적 적은 새로운 코드가 필요...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.