美文网首页
设计模式7 - 门面模式【Facade Pattern】

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

作者: 阿甘兄 | 来源:发表于2019-08-26 13:59 被阅读0次

    门面模式

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

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

    这里写图片描述

    写信流程类:

    /**
    * 定义一个写信的过程
    */
    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); 
     
     } 
    } 
    

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

    相关文章

      网友评论

          本文标题:设计模式7 - 门面模式【Facade Pattern】

          本文链接:https://www.haomeiwen.com/subject/acirectx.html