外观模式
来源:互联网 发布:云数据库语言 编辑:程序博客网 时间:2024/06/05 17:59
参考《设计模式的艺术软件开发人员内功修炼之道》-刘伟 著
实验目的
外观模式作为调用者和系统之间的接口,屏蔽了系统的具体细节,简化调用
实验代码
package Facade;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;class ReadFile { public static String readFile(String filename) throws IOException { File file = new File(filename); if (!(file.exists() && file.canRead() && file.isFile())) { System.out.println("source file not satisfy requirement"); return null; } StringBuffer sb = new StringBuffer(); FileInputStream is = new FileInputStream(filename); int data; while ((data = is.read()) != -1) { sb.append((char) data); } System.out.println("return string of readFile is " + sb.toString()); return sb.toString(); }}class EncryFile { public static String encryFile(String str) { StringBuffer sb = new StringBuffer(); int len = str.length(); for (int i = 0; i < len; i++) { char c = (char) (str.charAt(i) + 0); sb.append(c); } System.out.println("return string of encryFile is " + sb.toString()); return sb.toString(); }}class WriteFile { public static void writeFile(String encryContent, String filename) throws IOException { File file = new File(filename); if (file.exists() && !file.canWrite()) { System.out.println("dest file not satisfy requirement"); return; } if (!file.exists()) file.createNewFile(); FileOutputStream os = new FileOutputStream(filename); os.write(encryContent.getBytes()); System.out.println("return string of writeFile is " + encryContent); }}interface AbstractInterface { public void encryptFile(String filesrc, String filedest) throws IOException;}class ConcreteImpletation implements AbstractInterface { @Override public void encryptFile(String filesrc, String filedest) throws IOException { // TODO Auto-generated method stub String content = ReadFile.readFile(filesrc); String encryContent = EncryFile.encryFile(content); WriteFile.writeFile(encryContent, filedest); }}public class FacadeTest { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub AbstractInterface intf = new ConcreteImpletation(); intf.encryptFile("D:/src.txt", "D:/dest.txt"); return; }}
结果输出
return string of readFile is abcdefghijklmnreturn string of encryFile is abcdefghijklmnreturn string of writeFile is abcdefghijklmn
结论
- 外观模式解耦客户端和系统,减少复杂依赖关系
- 改变接口只需要增加具体的外观实现类即可
0 0
- 外观模式
- 外观模式
- 外观模式
- 外观模式
- 外观模式
- 外观模式
- 外观模式
- 外观模式
- 外观模式
- 外观模式
- 外观模式
- 外观模式
- 外观模式
- 外观模式
- 外观模式
- 外观模式
- 外观模式
- 外观模式
- No ViewHolder!!! 一个非官方的纯java版 databinding(拒绝xml配置).
- Unity3D说明文档翻译-Scene View Navigation
- string库之模拟实现strlen与memset
- Android UI-SlidingMenu侧滑菜单效果
- 【C++】:拷贝构造函数
- 外观模式
- 【J2EE】JDBC+JSP+Servlet
- Codeforces Round #404 (Div. 2) -- E. Anton and Permutation(分块xjb 搞)
- Codeforces Round #404 (Div. 2) 题解
- Java核心技术:卷一——前言
- windows 下编译ffmpeg
- string库之模拟实现strchr、strrchr与memchr
- Codeforces Round #404 (Div. 2) -- C. Anton and Fairy Tale(二分)
- tar解压失败:gzip: stdin: not in gzip format