开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 27 天,点击查看活动详情
前言:今天偷偷摸摸(上课摸鱼)又找了几个公司投简历吧。其实本来是想找面试试试水,结果他直接给题让我做了,哦,救命,我真的好菜
第一个问题:
本题的本质就是文件替换,那么就需要读取文件,输出文件。
那么涉及到file就需要需要使用file对象,File file = new File(path);
然后创建文件输入流缓存字符数组,提供read方法把字符读入数组,提供判断读取后是不是-1查看是不是到达了末尾。
然后生成字符串替换文本。
本题替换是把数字1-》a,2-》b,3-》c,4-》d,所以提供if判断,进行内容替换。最好把替换后内容写入原文件。
读取文件代码:
怎么替换,我们需要新建一个变量,然后在进行文件读取时候,把内容添加到变量里面。然后提供String的replace进行替换。最后创建输出流把替换完成的内容写入数组
在源代码基础上,我提出的优化有1.数组长度1024,空格太多了,浪费空间,并且可能导致输出错误,修改成inputstream.available大小。2.替换的时候因为替换是数字,可以用正则表达式匹配。
然后就是第二个问题
看到这个,我开始第一反应是工厂模式,但是上面题又是策略模式,然后就去了解了一下两个区别。(因为他们两个从uml图来看,非常相似)
在看实现代码时候,发现他们都有接口,和实现类,不同点在于,如果是工厂模式,在实现时候,需要通过传入参数,判断进行哪一个类的实例化,而策略模式,不需要判断,因为他直接有多个实现,通过构造方法进行。