运用java策略模式一个小程序
/**
*
*/
package Strategy;
import java.util.Arrays;
/**
* @author HuangRong
* @Funtion 定义策略
*/
public interface ComputablesStra {
public abstract void printForm();
}
/**
*
*/
package Strategy;
/**
* @author HuangRong
* @Function 为策略模式中的上下文角色,
* 提供printLetter()方法调用具体策略所重写的方法
*/
public class ControlPrint {
ComputablesStra stra;
public void setStrategy(ComputablesStra stra){
this.stra=stra;
}
public void printLetter(){
stra.printForm();
}
}
/**
*
*/
package Strategy;
import java.util.Arrays;
/**
* @author HuangRong
* @Funtion 按照大写,小写穿插的方式输出26个英文字母的实现,
* 为具体策略
*/
public class Form1 implements ComputablesStra {
@Override
public void printForm() {
// TODO Auto-generated method stub
//int m;
for(char i='a';i<='z';i++){
System.out.print(i+",");
System.out.print ((char)(i-32));
if((char)(i-32)!='Z'){
System.out.print(",");
}
}
System.out.println (";");
}
}
package Strategy;
/**
* @author HuangRong
* @Funtion 按照先大写全部输出,再小写全部输出的方式输出26个英文字母的实现,
* 为具体策略
*/
public class Form2 implements ComputablesStra {
@Override
public void printForm() {
// TODO Auto-generated method stub
char i;
for(i='A';i<='Z';i++){
System.out.print(i);
if(i!='Z'){
System.out.print(",");
}
}
System.out.print(";");
for(i='a';i<='z';i++){
System.out.print(i);
if(i!='z'){
System.out.print(",");
}
}
System.out.println(";");
}
}
/**
*
*/
package Strategy;
/**
* @author HuangRong
* @Function 策略模式的使用
*/
public class PrintMain {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//上下文对象
ControlPrint print=new ControlPrint();
//上下文对象使用策略一
print.setStrategy(new Form1());
System.out.println("按照大写,小写穿插的方式输出26个英文字母:");
print.printLetter();
//上下文对象使用策略二
print.setStrategy(new Form2());
System.out.println("按照先大写全部输出,再小写全部输出的方式输出26个英文字母:");
print.printLetter();
}
}