命令模式实现英-俄-数字
Command.java:
public interface Command {
public abstract void execute();
}
``
MacroCommand.java:
```java
import java.util.*;
public class MacroCommand implements Command{
ArrayList<Command> commandList;
MacroCommand(ArrayList<Command> commandList)
{
this.commandList=commandList;
}
public void execute()
{
for(int k=0;k<=commandList.size();k++)
{
Command command=commandList.get(k);
command.execute();
}
}
}
PrintEnglishCommand.java:
public class PrintEnglishCommand implements Command{
PrintLetter letter;
PrintEnglishCommand(PrintLetter letter)
{
this.letter=letter;
}
public void execute()
{
letter.printEnglish();
}
}
PrintLetter.java:
public class PrintLetter {
public void printEnglish()
{
for(char c='a';c<='z';c++)
{
System.out.print(""+c);
}
}
public void printRussian()
{
for(char c='ф';c<='я';c++)
{
System.out.print(""+c);
}
}
}
PrintNumber.java:
public class PrintNumber {
int n;
PrintNumber(int n)
{
this.n=n;
}
public void printEvenNumber()
{
for(int m=1;m<=n;m++)
{
if(m%2==0)
{
System.out.print(""+m);
}
}
}
}
PrintNumberCommand.java:
public class PrintNumberCommand implements Command{
PrintNumber number;
PrintNumberCommand(PrintNumber number)
{
this.number=number;
}
public void execute()
{
number.printEvenNumber();
}
}
PrintRussianCommand.java:
public class PrintRussianCommand implements Command{
PrintLetter letter;
PrintRussianCommand(PrintLetter letter)
{
this.letter=letter;
}
public void execute()
{
letter.printRussian();
}
}
RequestPerson.java:
public class RequestPerson {
Command command;
public void setCommand(Command command)
{
this.command=command;
}
public void startExecuteCommand()
{
command.execute();
}
}
Application.java:
import java.util.*;
public class Application {
public static void main(String[] args) {
ArrayList<Command> list=new ArrayList<Command>();
RequestPerson person=new RequestPerson();
Command command1=new PrintEnglishCommand(new PrintLetter());
Command command2=new PrintRussianCommand(new PrintLetter());
Command command3=new PrintNumberCommand(new PrintNumber(20));
list.add(command1);
list.add(command2);
list.add(command3);
Command macroCommand=new MacroCommand(list);
System.out.print("英文字母表");
person.setCommand(command1);
person.startExecuteCommand();
System.out.print("%n用宏命令输出字母表,俄文1~20间字符:");
person.setCommand(macroCommand);
person.startExecuteCommand();
}
}