门面模式

定义:​是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。

例子(投递信件,流程封装在类里面):

设计模式7 - 门面模式【Facade Pattern】_门面模式

写信流程类:

/**
* 定义一个写信的过程
*/
public interface LetterProcess {

//首先要写信的内容
public void writeContext(String context);

//其次写信封
public void fillEnvelope(String address);

//把信放到信封里
public void letterInotoEnvelope();

//然后邮递
public void sendLetter();

}

/**
* 写信的具体实现了
*/
public class LetterProcessImpl implements LetterProcess {

//写信
public void writeContext(String context) {
System.out.println("填写信的内容...." + context);
}

//在信封上填写必要的信息
public void fillEnvelope(String address) {
System.out.println("填写收件人地址及姓名...." + address);
}

//把信放到信封中,并封好
public void letterInotoEnvelope() {
System.out.println("把信放到信封中....");
}

//塞到邮箱中,邮递
public void sendLetter() {
System.out.println("邮递信件...");
}
}

门面类:

/**
*门面类
*/
public class ModenPostOffice {

private LetterProcess letterProcess = new LetterProcessImpl();

//写信,封装,投递,一体化了
public void sendLetter(String context,String address){
//帮你写信
letterProcess.writeContext(context);

//写好信封
letterProcess.fillEnvelope(address);

//把信放到信封中
letterProcess.letterInotoEnvelope();

//邮递信件
letterProcess.sendLetter();
}
}

主程序调用:

public class Client { 
public static void main(String[] args) {
//现代化的邮局,有这项服务,邮局名称叫Hell Road
ModenPostOffice hellRoadPostOffice = new ModenPostOffice();

//你只要把信的内容和收信人地址给他,他会帮你完成一系列的工作;
String address = "Happy Road No. 666,God Province,Heaven"; //定义一个地址
String context = "Hello,It's me,do you know who am? I'm your old lover.
I'd like to....";

hellRoadPostOffice.sendLetter(context, address);

}
}

总结:

是一个很好的封装方法,一个子系统比较复杂的实话,比如算法或者业务比较复杂,就可以封装出一个或多个门面出来,项目的结构简单,而且扩展性非常好。