• 设计模式:外观模式(门面模式)


      外观模式也叫门面模式, 它为子系统提供统一入口,封装系统复杂性。如同医院看病,病人需要与挂号,门诊,划价,化验,收费,取药等部门打交道

    如同一个子系统客户端和另一个子系统各个类打交道一样,相互耦合处理复杂,如果引入门面模式,在医院增加一个接待员,由接待员复制与上面各个

    部门打交道,那么对于病人这个客户端来说就容易很多。

    门面模式主要就两个角色。

    门面角色:客户端调用该角色方法。该角色包好各子系统的功能。

    子系统角色:完成子系統各功能

    例子:模拟注册公司流程

      1:未使用门面模式时,流程图如下

      2.使用了门面模式后(增加门面对象)

     interface GongShang {
         boolean checkName();
    }
    
    /**
     * 模擬工商局
     */
    public class BeijinGongShang implements GongShang{
        @Override
        public boolean checkName() {
            System.out.println("北京工商局检查");
            return false;
        }
    }
    

      

    interface ShuiWu {
        boolean checkCertificate();
    }
    
    /**
     * 模拟税务局
     */
    public class BeijinShuiWu implements ShuiWu {
        @Override
        public boolean checkCertificate() {
            System.out.println("北京稅務局");
            return false;
        }
    }
    

      

    interface Zhijian{
        boolean checkType();
    }
    
    public class BeijinZhijian implements Zhijian{
        @Override
        public boolean checkType() {
            System.out.println("北京質監局");
            return false;
        }
    }
    

      

    /**
     * 办理注册公司流程的门面对象
     *
     */
    public class RegisterFacade {
    
    	public void register(){
    		GongShang  a = new BeijinGongShang();
    		a.checkName();
    		Zhijian b = new BeijinZhijian();
    		b.checkType();
    		ShuiWu  c  = new BeijinShuiWu();
    		c.checkCertificate();
    	}
    
    
    }
    

      

    public class Client {
        public static void main(String[] args) {
            //使用门面模式只需要调用门面角色的方法
            new RegisterFacade().register();
        }
    }
    

      从上面的实例来看,有了这个門面类,也就是RegeisterFacader类,用户就不用亲自去调用子系统中类了,不需要知道系统内部的实现细节,甚至都不用知道系统内部的构成。

    客户端只需要跟门面类交互就可以了。

  • 相关阅读:
    如何使用Apache设置404页面
    字符串函数积累
    isset() unset()
    set_exception_handler 自定义异常处理
    phpMailer中文说明[转]
    我的PHPMailer_v5.1 使用
    PHPMailer_v5.1 使用[转]
    PHP错误和异常处理
    几个 PHP 的“魔术常量”
    九宫格布局(demo16.03.14)
  • 原文地址:https://www.cnblogs.com/gcm688/p/10241497.html
Copyright © 2020-2023  润新知