使用策略模式设计一个系统,该系统包含大小写输出英文字母表的策略
时间: 2024-12-10 16:33:54 浏览: 8
策略模式是一种行为设计模式,它允许你在运行时改变对象的行为。在设计一个系统,比如用于显示字母表的程序,我们可以创建一系列不同的策略来处理不同的输出格式,如大写、小写或混合大小写。
首先,我们需要创建一个接口或抽象类`LetterDisplayStrategy`,定义一个基本的行为`displayAlphabet()`:
```java
public interface LetterDisplayStrategy {
void displayAlphabet();
}
```
然后,我们为每种输出策略创建具体的实现类:
1. `UpperCaseLetterDisplayStrategy`:
```java
public class UpperCaseLetterDisplayStrategy implements LetterDisplayStrategy {
@Override
public void displayAlphabet() {
for (char letter = 'A'; letter <= 'Z'; letter++) {
System.out.print(letter);
}
}
}
```
2. `LowerCaseLetterDisplayStrategy`:
```java
public class LowerCaseLetterDisplayStrategy implements LetterDisplayStrategy {
@Override
public void displayAlphabet() {
for (char letter = 'a'; letter <= 'z'; letter++) {
System.out.print(letter);
}
}
}
```
3. `MixedCaseLetterDisplayStrategy`:
```java
public class MixedCaseLetterDisplayStrategy implements LetterDisplayStrategy {
@Override
public void displayAlphabet() {
for (char letter = 'A'; letter <= 'Z'; letter++) {
System.out.print(Character.toUpperCase(letter));
}
for (char letter = 'a'; letter <= 'z'; letter++) {
System.out.print(letter);
}
}
}
```
最后,在一个上下文中,我们可以使用`Context`来管理并切换不同的策略:
```java
public class AlphabetDisplayContext {
private LetterDisplayStrategy strategy;
public void setStrategy(LetterDisplayStrategy strategy) {
this.strategy = strategy;
}
public void displayAlphabet() {
strategy.displayAlphabet();
}
}
```
用户可以在运行时动态选择显示策略:
```java
AlphabetDisplayContext context = new AlphabetDisplayContext();
context.setStrategy(new UpperCaseLetterDisplayStrategy());
context.displayAlphabet();
// 更改策略
context.setStrategy(new LowerCaseLetterDisplayStrategy());
context.displayAlphabet();
```
阅读全文