(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. 05001_Linux简介

    1.Linux的概述 (1)Linux是基于Unix的开源免费的操作系统,由于系统的稳定性和安全性几乎成为程序代码运行的最佳系统环境.Linux是由Linus Torvalds(林纳斯•托瓦兹)起初开 ...

  2. JAVA类库LinkList的基本实现

    写完调试了好久,边界不优点理,具体的请看JDK类库,下面仅仅是基本实现: import java.util.Iterator; /** * 类名:MyLinkedList 说明:LinkedList的 ...

  3. hdoj--2682--Tree()

    Tree Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  4. html关于不换行代码

    类似这种效果  这是基于a标签 不是用table实现的 <a style="display: inline-block;white-space:nowrap;width: 100px; ...

  5. Python带括号的计算器

    带括号的计算器也是第一个自我感觉完成最好的 毕竟真的弄了一个多星期 虽然前期这路真的很难走  我会努力加油  将Python学好学踏实 参考了两位博主的文章 http://www.cnblogs.co ...

  6. 程序发布出现: 服务器无法处理请求--->无法生成临时类(result = 1)。 错误CS2001:未能找到源文件“C:\ Windows \ TEMP \ lph54vwf.0.cs”

    服务器上发布的web服务程序出错: 服务器无法处理请求--->无法生成临时类(result = 1).错误CS2001:未能找到源文件“C:\ Windows \ TEMP \ lph54vwf ...

  7. jquery基本Dom操作

    1 html()获取所有的html内容 2 html(value) 设置html内容,有html自动解析 3 text() 获取文本内容 4 text(value) 设置文本内容,有html自动转义 ...

  8. node.学习笔记(关于http2的讲解)

    个人总结:读完这篇文章需要30分钟 http2部分很有学习价值,可以好好看.  用node搭建TCP服务器 用node搭建HTTP服务器 用node文件fs模块对文件读取,并用流的方式写入 用url路 ...

  9. GridView单元格取值显示为&nbsp;

    在通过GridView取一个单元格(cell)的值时,数据库中为NULL,而页面上显示为空格.发现通过gridview.cell[i].text取出来的值为 ,导致获取数据出现问题. 解决方法: 一. ...

  10. js中迭代的常用几种方法

    var arr = [1,3,2,5,3]; //forEach 两个参数,第一个为数组内容,第二个为数组下标arr.forEach(function(item,index) { console.lo ...