使用java策略模式设计一个系统,该系统包含几种输出英文字母表的策略。
时间: 2023-06-17 21:02:42 浏览: 181
好的,我来为你介绍如何使用Java策略模式设计一个系统,该系统包含几种输出英文字母表的策略。
首先,我们需要定义一个策略接口,该接口将规定所有输出策略的基本方法:
```java
public interface AlphabetStrategy {
void printAlphabet();
}
```
接下来,我们可以创建几个具体的策略类,每个类都实现上述接口,并实现自己的输出方法:
```java
public class UppercaseAlphabetStrategy implements AlphabetStrategy {
@Override
public void printAlphabet() {
for (char c = 'A'; c <= 'Z'; c++) {
System.out.print(c + " ");
}
System.out.println();
}
}
public class LowercaseAlphabetStrategy implements AlphabetStrategy {
@Override
public void printAlphabet() {
for (char c = 'a'; c <= 'z'; c++) {
System.out.print(c + " ");
}
System.out.println();
}
}
public class ReverseUppercaseAlphabetStrategy implements AlphabetStrategy {
@Override
public void printAlphabet() {
for (char c = 'Z'; c >= 'A'; c--) {
System.out.print(c + " ");
}
System.out.println();
}
}
```
在以上代码中,我们创建了三个具体的策略类:UppercaseAlphabetStrategy、LowercaseAlphabetStrategy和ReverseUppercaseAlphabetStrategy。它们分别实现了输出大写字母表、小写字母表和反向大写字母表的方法。
最后,我们需要定义一个Context类,该类将持有一个策略对象,并在需要时调用其方法:
```java
public class AlphabetPrinter {
private AlphabetStrategy strategy;
public AlphabetPrinter(AlphabetStrategy strategy) {
this.strategy = strategy;
}
public void printAlphabet() {
this.strategy.printAlphabet();
}
}
```
在以上代码中,我们创建了一个AlphabetPrinter类,它包含一个策略对象。在需要输出字母表时,我们可以调用printAlphabet()方法,该方法将会调用所持有策略对象的printAlphabet()方法。
现在,我们可以使用以上代码来创建一个简单的应用程序,该程序将使用不同的策略对象来输出不同的字母表:
```java
public class Main {
public static void main(String[] args) {
AlphabetPrinter printer = new AlphabetPrinter(new UppercaseAlphabetStrategy());
printer.printAlphabet();
printer = new AlphabetPrinter(new LowercaseAlphabetStrategy());
printer.printAlphabet();
printer = new AlphabetPrinter(new ReverseUppercaseAlphabetStrategy());
printer.printAlphabet();
}
}
```
在以上代码中,我们创建了三个AlphabetPrinter对象,每个对象使用不同的策略对象来输出不同的字母表。程序运行结果如下:
```
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
```
这样,我们就使用Java策略模式设计了一个系统,该系统包含几种输出英文字母表的策略。
阅读全文