我最近被要求在编码面试中编写一个简单的Java控制台应用程序来执行某些文件io并显示数据。我打算带着DAO去城里,但由于我从不操纵读数的数据,所以DAO的整个想法似乎有些过分。
当您不需要时,任何人都知道一种干净的方式来确保分离关注而不会影响完整的CRUD吗?
答案 0 :(得分:1)
Martin Fowler的表网关模式explained here怎么样?只需包含查找(读取)方法并错过创建,插入和更新。
答案 1 :(得分:1)
看起来像标准的MVC模式。您的控制台是视图,读取文件的代码是控制器,捕获文件行或整个文件内容的代码是您的模型。 您可以进一步将其简化为View和Model,其中model将封装文件读取并将其内容包装到Java类中。
答案 2 :(得分:0)
您可以简单地参考命令/查询模式,其中命令是单独执行创建更新和删除操作的命令,而查询是为只读目的引入的。
因此你实现了你需要的东西并离开了其他人
答案 3 :(得分:0)
这个问题是在采访中所以没有太多时间进行详细设计,作为上述问题的最低要求,以下结构将提供灵活性。可以根据要求填写详细信息。
public interface IODevice {
String read();
void write(String data);
}
class FileIO implements IODevice {
@Override
public String read() {
return null;
}
@Override
public void write(String data) {
//...;
}
}
class ConsoleIO implements IODevice {
@Override
public String read() {
return null;
}
@Override
public void write(String data) {
//... null;
}
}
public class DataConverter {
public static void main(String[] args) {
FileIO fData1 = null;// ... appropriately obtained instance;
FileIO fData2 = null;// ... appropriately obtained instance;
ConsoleIO cData = null;// ... appropriately obtained instance;
cData.write(fData2.read());
fData1.write(cData.read());
}
}
客户端类仅使用设备的API。这将保留扩展接口的选项以实现新的设备包装器(例如xml,stream等)