其他分享
首页 > 其他分享> > 设计模式7 - 门面模式【Facade Pattern】

设计模式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); 

 } 
} 

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

 

标签:信封,String,Pattern,void,context,address,Facade,设计模式,public
来源: https://blog.51cto.com/u_15294985/3006162