什么是门面模式

门面模式:为各个子系统提供一个统一的入口,客户直接与这个入口交互。

门面模式结构图:

门面模式的一个实例

客户需要读取一个文件内容,然后把读出的内容进行加密,再把加密后的内容保存到另一个文件中。假如读取文件(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");
    }
}

(完)