p122-(1)
Application.java
public class Application {
public static void main(String argv[]) {
GetShow k=new GetShow();
k.setStrategy(new ConcreteStrategyA());
A a=new A();
a.settype("策略1:从a到z打印\n");
System.out.printf("%s",a.gettype());
k.getshow();
k.setStrategy(new ConcreteStrategyB());
A b=new A();
b.settype("\n策略2:从a到z打印\n");
System.out.printf("%s",b.gettype());
k.getshow();
k.setStrategy(new ConcreteStrategyC());
A c=new A();
c.settype("\n策略3:大写字母从a到z打印\n");
System.out.printf("%s",c.gettype());
k.getshow();
}
}
class A{
String type;
public void settype(String s) {
type=s;
}
public String gettype() {
return type;
}
}//此类可无,不重要
ConcreteStrategyA.java
public class ConcreteStrategyA implements Strategy{
public void show() {
char cStart='a',cEnd='z';
for(char c=cStart;c<=cEnd;c++){
System.out.print(" "+c);
}}
}
ConcreteStrategyB.java
public class ConcreteStrategyB implements Strategy {
public void show() {
char cStart='z',cEnd='a';
for(char c=cStart;c>=cEnd;c--){
System.out.print(" "+c);
}}
}
ConcreteStrategyC.java
public class ConcreteStrategyC implements Strategy {
public void show() {
for(int i = 1;i<=26;i++){
System.out.print(Character.toUpperCase((char)(96+i)));//大写
}
}
}
GetShow.java
public class GetShow {
Strategy strategy;
public void setStrategy(Strategy strategy) {
this.strategy=strategy;
}
public void getshow() {
strategy.show();//直接调用即可,书上的通过return
}
}
Strategy.java
public interface Strategy {
public void show();
}