
目录一、关于外观模式二、设计要求三、设计实现1.子系统2.外观四、应用程序五、执行结果一、关于外观模式设计模式10、外观模式_外观模式uml-CSDN博客二、设计要求设计一个子系统该子系统有三个类ReadFile、AnalyzeInformation和SaveFile类各个类的职责如下ReadFile类的实例可以读取文本文件AnalyzeInformation类的实例可以从一个文本文件中删除用户不需要的内容SaveFile类的实例能将一个文本保存到文本文件请为上述子系统设计一个外观以便简化用户和上述子系统所进行的交互。三、设计实现1.子系统ReadFile.javapackage xyz.jangle.design.app.facade; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; /** * 读取文本文件内容的类 * author jangle * email janglejangle.xyz * time 2026年10月16日 上午9:38:11 * */ public class ReadFile { public String readFileContent(String fileName) { StringBuffer sb new StringBuffer(); try(BufferedReader read new BufferedReader(new FileReader(fileName))){ String s; while((sread.readLine()) ! null) { sb.append(s); sb.append(\n); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return sb.toString(); } }AnalyzeInformation.javapackage xyz.jangle.design.app.facade; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * author jangle * email janglejangle.xyz * time 2026年10月16日 上午9:43:30 * */ public class AnalyzeInformation { /** * 从content中删除指定文本并返回删除后的文本。 * * author jangle * time 2026年10月16日 上午9:47:56 * param content * param deleteContent * return */ public String getSavedContent(String content,String deleteContent) { Pattern p; Matcher m; p Pattern.compile(deleteContent); m p.matcher(content); String saveContent m.replaceAll(); return saveContent; } }WriteFile.javapackage xyz.jangle.design.app.facade; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.StringReader; /** * author jangle * email janglejangle.xyz * time 2026年10月16日 上午9:48:49 * */ public class WriteFile { /** * 将文本内容写入到指定文件 * * author jangle * time 2026年10月16日 上午9:57:08 * param fileName * param content */ public void writeToFile(String fileName,String content) { try(BufferedReader read new BufferedReader(new StringReader(content)); BufferedWriter write new BufferedWriter(new FileWriter(fileName))){ String s null; while((s read.readLine()) ! null) { write.write(s); write.newLine(); write.flush(); } } catch (IOException e) { e.printStackTrace(); } } }2.外观本问题的外观是ReadAndWriteFacade类该类的实例含有ReadFile,AnalyzeInformation和SaveFile类的实例引用。package xyz.jangle.design.app.facade; /** * author jangle * email janglejangle.xyz * time 2026年10月16日 上午10:00:23 * */ public class ReadAndWriteFacade { private ReadFile readFile; private AnalyzeInformation analyzeInformation; private WriteFile writeFile; public ReadAndWriteFacade() { readFile new ReadFile(); analyzeInformation new AnalyzeInformation(); writeFile new WriteFile(); } /** * 读取指定文件的内容删除内容中的指定类型文本再保存修改后的文本到指定文件中 * * author jangle * time 2026年10月16日 上午10:06:08 * param readFileName * param delContent * param savedFileName */ public void doOption(String readFileName,String delContent,String savedFileName) { String content readFile.readFileContent(readFileName); System.out.println(原内容); System.out.println(content); String savedContent analyzeInformation.getSavedContent(content, delContent); writeFile.writeToFile(savedFileName, savedContent); System.out.println(替换后的内容); System.out.println(savedContent); } }四、应用程序package xyz.jangle.design.app.facade; /** * author jangle * email janglejangle.xyz * time 2026年10月16日 上午10:07:25 * */ public class Application { public static void main(String[] args) { String path src/xyz/jangle/design/app/facade; String sourceFile path/index.html; String targetFile path/save.txt; ReadAndWriteFacade facade new ReadAndWriteFacade(); facade.doOption(sourceFile, [^]*, targetFile); } }五、执行结果