zoukankan      html  css  js  c++  java
  • JavaScript设计模式(6)-门面模式

    门面模式

    门面模式(Facade Pattern):他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。

    1. 作用:

    • 简化类的接口
    • 消除类与使用它的客户代码之间的耦合

    2. 设计一个事件工具

    window.DED = window.DED || {};
    DED.util = DED.util || {}
    
    DED.util.Event = {
        getEvent: function(e) {
            return e || window.event
        },
        getTarget: function(e) {
            return e.target || e.srcElement
        },
        stopPropagation: function(e) {
            if(e.stopPropagation) {
                e.stopPropagation()
            } else {
                e.cancelBubble = true;
            }
        },
        preventDefault: function(e) {
            if(e.preventDefault) {
                e.preventDefault()
            } else {
                e.returnValue = false;
            }
        },
        stopEvent: function(e) {
            this.stopPropagation(e);
            this.preventDefault(e);
        }
    }
    
    function addEvent(el, type, fn) {
        if (window.addEventListener) {
            el.addEventListener(type, fn, false);
        } else if (window.attachEvent) {
            el.attachEvent('on'+ type, fn);
        } else {
            el['on' + type] = fn;
        }
    }
    
    // usage
    addEvent(document.querySelector('button'), 'click', function(e){
        console.log(DED.util.Event.getEvent(e))
        console.log(DED.util.Event.getTarget(e))
        console.log(DED.util.Event.stopEvent(e))
    })
    

    3. 实现门面模式的一般步骤

    • 找准自己应用程序中感觉适合使用门面方法的地方
      • 两个函数经常同时出现在一个地方
      • 需要处理跨浏览器的差异问题
    • 起一个适合的名字

    4. 门面模式的利与弊

    • 利:
      • 编写一次组合代码,然后可以反复利用个,节省时间和精力
      • 简化接口
      • 降低对外部代码的依赖程度
      • 可以避免与下层子系统紧密耦合,这样可以对这个系统进行修改而不会影响到客户代码
    • 弊:
      • 滥用会带来不必要的负担,有时并不需要使用门面模式

    注意

    转载、引用,但请标明作者和原文地址

  • 相关阅读:
    【JDK8特性】Stream接口详解
    【JDK8特性】Optional包装类详解
    【JDK8特性】lambda表达式详解
    关闭windows defender 扫描目录
    IIS服务启动提示当文件已存在时,无法创建该文件,183(转载)
    java部署到ubuntu
    设计模式之模板模式
    Aop示例之注解切面方式实现日志打印
    多线程实现生产消费模式
    关于linux-centos 7.x中使用xfreerdp命令去连接windows主机的远程桌面
  • 原文地址:https://www.cnblogs.com/CccZss/p/8492588.html
Copyright © 2011-2022 走看看