public interface FileReader {
void readFile();
void writeFile();
}
public class XMLReader implements FileReader {
@Override
public void readFile() {
System.out.println("Hellp i am read");
}
@Override
public void writeFile() {
System.out.println("Hello i am write");
}
}
public class ExcelReader implements FileReader {
@Override
public void readFile() {
System.out.println("Hellp i am read");
}
@Override
public void writeFile() {
System.out.println("Hello i am write");
}
}
public class Context {
FileReader reader ;
public Context(FileReader reader) {
super();
this.reader = reader;
}
public void executeRead(){
reader.readFile();
}
}
public class TestStrategy {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(args[0]);
String s=args[0];
String[] a=s.split("\\.");
if(a[1].equals("csv")){
new Context(new XMLReader()).executeRead();
}else{
new Context(new ExcelReader()).executeRead();
}
}
}
我已經介紹了,我們將創建一個單獨的類爲他們擔心更多的文件格式,但我不得不改變TestStrategy類中的if else代碼來創建新的對象文件模式介紹。策略模式來讀取不同的文件格式
我們可以刪除這個if其他代碼。任何建議。
您是否熟悉工廠模式? – bradimus
你可以使用和抽象類來做類似'if(test == ok)readFile'的類,那麼你的每個類都會繼承這個行爲。現在你的狀態將不得不遍歷每一個繼承abtract類的類。每一個策略都會包含她自己的狀況 –