重构具有相同逻辑但使用不同类的方法(在Java中)的最佳方法是什么?我们说
Method1(FileInputStream obj, OutputStream o){
//stuff
while(something){
//---
//some code
//---
obj.read();
//---
//some code
//---
o.write(..);
//code
}
//code
}
然后我
Method2(InputStreamReader obj, OutputStreamWriter os){
//stuff
while(something){
//---
//some code
//---
obj.read(..);
//---
//some code
//---
os.write();
//code
}
//code
}
1方法处理二进制文件,另一种方法处理文本。理想情况下,我想要的是具有读取 - 处理 - 写入并隐藏所有特定信息
答案 0 :(得分:2)
最好的方法是使用正确的接口:
void method2(Reader obj, Writer os){
// code...
}
然后像InputStreams
method2(new InputStreamReader(fileInputStream), new OutputStreamWriter(outputstream));
为什么这样更好?
这样做更好,因为您抽象出方法的工作方式。你说你不关心实现是什么,只要它符合Reader
或Writer
。因此,用户有责任将InputStream
更改为Reader
。 不是你的。如果有异常,那么不要需要抓住它。它被抛在客户端代码中。这是一个重要的注意事项。
答案 1 :(得分:0)
你不能读写相同的东西,除了名字之外没有任何共同之处。使它们变得通用的唯一方法是将二进制和文本写为二进制,即最后它们都转为二进制。