门面模式
定义:是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。
例子(投递信件,流程封装在类里面):
写信流程类:
/** * 定义一个写信的过程 */ 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); } }
总结:
是一个很好的封装方法,一个子系统比较复杂的实话,比如算法或者业务比较复杂,就可以封装出一个或多个门面出来,项目的结构简单,而且扩展性非常好。