设计模式:门面模式
什么是门面模式
门面模式:为各个子系统提供一个统一的入口,客户直接与这个入口交互。
门面模式结构图:
门面模式的一个实例
客户需要读取一个文件内容,然后把读出的内容进行加密,再把加密后的内容保存到另一个文件中。假如读取文件(FileRead)、加密(Encode)和保存文本(FileWrite)是三个独立的类。不使用门面模式的话,客户端需要与这三个类交互完成这一系列的操作。使用门面模式的话,把这三个操作封装在门面类的统一接口中。客户端只需与门面类交互即可。
实例代码
FileRead
public class FileRead {
public String read(String srcPath){
System.out.println("Read...");
return null;
}
}
Encode
public class Encode {
public String encode(String src){
System.out.println("Encode...");
return null;
}
}
FileWrite
public class FileWrite {
public void write(String src,String filePath){
System.out.println("Write...");
}
}
AbstractFacade
public abstract class AbstractFacade {
public abstract int encode(String srcPath,String desPath);
}
Facade
public class Facade extends AbstractFacade {
FileRead reader = null;
FileWrite writer = null;
Encode encoder = null;
public Facade(){
reader = new FileRead();
writer = new FileWrite();
encoder = new Encode();
}
@Override
public int encode(String srcPath, String desPath) {
String src = reader.read(srcPath);
String encodeStr = encoder.encode(src);
writer.write(encodeStr,desPath);
return 0;
}
}
Client
public class Client {
public static void main(String args[]){
AbstractFacade facade = new Facade();
facade.encode("path/to/src","path/to/des");
}
}
(完)