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クラスであれば、他のコードを変更する必要があります。Strategyパターンは、異なるファイル形式
他にもコードがありましたらお知らせください。
工場パターンに精通していますか? – bradimus
'if(test == ok)readFile'のようなことをする抽象クラスを使うことができます。そして、それぞれのクラスはこの振る舞いを継承します。あなたのstategyはabtractクラスを継承するすべてのクラスをループしなければなりません。各戦略は自分の状態をカプセル化します –