(function(){
//门面
function addEvebtFacade(el,type,fn){
if(window.addEventListener){
//使用与火狐浏览器
alert(1);
el.addEventListener(type,fn,false);
}else if(window.attachEvent){
//适用于IE的
alert(2);
el.attachEvent("on"+type,fn);
}else{
alert(3);
el["on"+type] = fn;
}
}
document.write("<a id='but1' href='#'>click</a>");
var el = document.getElementById("but1");
addEvebtFacade(el,"click",function(){
alert("ok")
})
})()
/**
* 用2个DAO来体现门面模式
*/
(function(){
//人员类
var PersonDao = new Interface("PersonDao",["getInfo","learn",
"marry"]);
var Person = function(){
this.name = "YUNFENGCHENG";
this.address = "BEIJING";
this.getInfo = function(){
return "名字: "+this.name +" 地址: "+this.address;
}
this.learn = function(){
document.write("学习");
}
this.marry = function(){};
//验证实现的接口
Interface.ensureImplements(this,PersonDao);
}
//DOG DAO
var DogDao = new Interface("DogDao",["call","run","getInfo"]);
var Dog = function(){
this.name = "DAHUANG";
this.getInfo = function(){
return "狗狗的名字: "+this.name;
}
this.run = function(){};
this.call = function(){};
Interface.ensureImplements(this,DogDao);
}
//需求是现在需要给养的够办了相应宠物领养证件 需要人和狗狗的信息可以
//1.不用门面
//客户端程序
function action(person,dog){
//当做养狗证的号码
var r = "GG"+new Date().getDate()+Math.floor(Math.random()*11);
var str = "办证成功 :编号 "+r
+"<br>主人信息: "+person.getInfo()
+"<br>狗狗的信息: "+dog.getInfo();
document.write(str);
}
action(new Person(),new Dog());
document.write("<br>..........................");
//使用门面模式
//负载的事交给门面来做
function facade(person,dog){
//当做养狗证的号码
var r = "GG"+new Date().getDate()+Math.floor(Math.random()*11);
this.str = "办证成功 :编号 "+r
+"<br>主人信息: "+person.getInfo()
+"<br>狗狗的信息: "+dog.getInfo();
}
facade.prototype.action = function(){
return this.str;
}
//客户端程序
function action2(person,dog){
document.write(new facade(person,dog).action());
}
action2(new Person(),new Dog())
//用了门面模式客户端代码就变的如此的简单了
})()

js38---门面模式的更多相关文章

  1. javaEE设计模式——门面模式

    1.本节内容 门面模式的意图介绍 门面模式带来的好处 门面模式的应用场景 实现模式的3中方式:POJO.无状态与有状态回话Bean门面 有状态与无状态回话Bean门面的重要差别 关于门面模式使用的警告 ...

  2. 门面模式的典型应用 Socket 和 Http(post,get)、TCP/IP 协议的关系总结

    门面模式的一个典型应用:Socket 套接字(Socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元.它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息: 连接使用的 ...

  3. FacadePattern(门面模式)

    /** * 外观模式(门面模式) * @author TMAC-J * 外观模式是通过访问一个前台来实现对子系统的访问,其和代理模式的区别是 * 代理模式是通过代理一个类的形式,也就是说一对一的关系 ...

  4. Tomcat源代码-门面模式(Facade)

    从Tomcat源码提炼出设计模式-门面设计模式: 概念 外部访问内部,耦合度增加,不利于扩展.而门面模式在内部基础上进行再度封装,只提供外部想要的方法.这时访问方式由“外部---内部”变为了“外部-- ...

  5. 说说设计模式~门面模式(Facade)

    返回目录 门面模式(Facade)属于结构型模式的一种,它符合面向对象的封装原则,但又不符合开闭原则,呵呵,今天我们主要说它的优点,不谈缺点. 定义 门面模式,是指提供一个统一的接口去访问多个子系统的 ...

  6. JAVA设计模式之门面模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述门面(Facade)模式的: 门面模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面对象进行.门面模式提供一个高层次的接口 ...

  7. 大熊君说说JS与设计模式之(门面模式Facade)迪米特法则的救赎篇------(监狱的故事)

    一,总体概要 1,笔者浅谈 说起“门面”这个设计模式其实不论新老程序猿都是在无意中就已经运用到此模式了,就像我们美丽的JS程序员一样不经意就使用了闭包处理问题, function Employee(n ...

  8. 【读书笔记】读《JavaScript设计模式》之门面模式

    一.前言 门面模式,也称Facade(外观)模式.核心的两点作用—— 1> 简化类的接口(让接口变得更加容易理解.容易应用.更加符合对应业务),来掩盖一个非常不同或者复杂的实现 2> 消除 ...

  9. Java 门面模式 浅析

    Java中的门面模式,一般来说他的用途是隐藏一些不希望用户看到的东西,比如方法,变量,并且这些变量是不能够设置成私有的,因为在系统内部有些地方需要调用.在Tomcat的HttpServletReque ...

  10. IOS设计模式之二(门面模式,装饰器模式)

    本文原文请见:http://www.raywenderlich.com/46988/ios-design-patterns. 由 @krq_tiger(http://weibo.com/xmuzyq) ...

随机推荐

  1. 【转】C#中RSA加密解密和签名与验证的实现

    [转]C#中RSA加密解密和签名与验证的实现 RSA加密算法是一种非对称加密算法.在公钥加密标准和电子商业中RSA被广泛使用.RSA是1977年由罗纳德•李维斯特(Ron Rivest).阿迪•萨莫尔 ...

  2. LeetCode_Construct Binary Tree from Inorder and Postorder Traversal

    一.题目 Construct Binary Tree from Inorder and Postorder Traversal My Submissions Given inorder and pos ...

  3. How to test Heat (by quqi99)

    作者:张华  发表于:2015-12-19版权声明:能够随意转载.转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 (http://blog.csdn.net/quqi99 ) Heat ...

  4. 轻量级记事本工具:CintaNotes

    本片文章介绍CintaNotes小工具 功能介绍: 方便.快捷的记录笔记: 快捷地从任何地方等截取内容生成笔记: 高效的记事本内容查询: 轻松的标签管理 支持移动设备和电脑同步(估计要收费) 官网下载 ...

  5. 定时器函数SetTimer

    原文链接:http://www.cnblogs.com/zhangpengshou/archive/2009/04/05/1429770.html 一.SetTimer表示的是定义个定时器.根据定义指 ...

  6. 关于echarts3版本里的tree图形显示Bug、无法缩放和移动

    在使用echarts3版本的js绘制tree图表的时候,如果想动态更新tree的数据,可能会出现图表渲染有异常,并且api给出的roam配置无法控制图表通过鼠标缩放和移动,如下图: 不过更改echar ...

  7. 51nod 最大子矩阵和

    一个M*N的矩阵,找到此矩阵的一个子矩阵,并且这个子矩阵的元素的和是最大的,输出这个最大的值. 我们可以降维,枚举矩形的长,然后算出一个一维数组,然后就转化成了最大字段和问题 #include< ...

  8. ssm框架的多表查询和增删查改

    必须声明本文章==>http://www.cnblogs.com/zhu520/p/7883273.html 一: 1):我的运行环境 我使用myeclipse(你也可以使用eclipse),t ...

  9. NOIP2009 最优贸易(BFS)

    本题正解是tarjan.我没有去写 之前的代码是错误的不好意思,因为数据太弱一直没有发现. 相同还是两遍bfs,一次正向,一次反向.在正向的时候我们求出从起点走到各个点的最小值.在反向的时候求出从终点 ...

  10. 动态游标(比如表名作为參数)以及动态SQL分析

    表名作为參数的动态游标 DECLARE v_table_name VARCHAR2(30) := 'CUX_MES_WIP_BARCODE_MAP'; --l_rec SYS_REFCURSOR; T ...