zoukankan      html  css  js  c++  java
  • [设计模式]门面模式

    在写门面模式之前,我总结了一下,觉得门面模式的写法和单体模式有些相似。
    但查阅过一些资料和朋友讨论之后,发现门面模式主要偏向于解决一些差异化的问题。
    我们先看一个简单的例子。

    //这是一个简单的门面模式例子,一个需求在不同的浏览器里有差异化。
    var Facade = {};
    Facade.isIE = function(){
    if(document.all){
    alert("这是IE");
    //do something...
    }else{
    alert("这不是IE");
    //do something...
    }
    }

    假设现在要设计一个库,里面需要处理不同浏览的事件差异化问题。
    比如,IE下event事件是在window对象下。
    IE下,事件目标和标准浏览器的不同。
    IE下,阻止事件静默行为。
    ......
    好,我们看以下这个例子。

    //这是一个简单的门面模式例子
    var Obj = {};
    var Obj.util = {};
    var Obj.util.Event = {
    //解决不同浏览器的事件差异
    getEvent:function(e){
    return e||window.event;
    },

    //解决事件目标对象差异
    getTarget:function(e){
    return e.target || e.srcElement;
    }

    //阻止浏览器静默方法差异解决
    preventDefault:function(e){
    if(e.preventDefault){
    e.preventDefault();
    }else{
    e.returnValue = false;
    }
    }
    }

    其实门面模式的就是把差异问题放在一个函数中,这样就可以提供一个一致的接口。
    或者我们还可以针对IE和标准浏览器的事件绑定的差异写一个例子。

    var addEvent = function(el,type,fn){
    if(window.addEventListener){
    el.addEventListener(type,fn);
    }else if{
    el.attachEvent('on' + type,fn);
    }else{
    el['on'+type] = fn;
    }
    }

    本模式也被称为外观模式。

  • 相关阅读:
    CXF调用webservice超时设置
    CSRF攻击测试及防御
    RMS去除在线认证
    Tuning 05 Sizing other SGA Structure
    Tuning 04 Sizing the Buffer Cache
    Oracle Tuning ( instance 级别 ) 01
    oracle tuning 工具
    Oracle Tuning 总括
    Transporting Data Between Database
    RMAN Restore, Recovery
  • 原文地址:https://www.cnblogs.com/zzbo/p/2356138.html
Copyright © 2011-2022 走看看