js38---门面模式
(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---门面模式的更多相关文章
- javaEE设计模式——门面模式
1.本节内容 门面模式的意图介绍 门面模式带来的好处 门面模式的应用场景 实现模式的3中方式:POJO.无状态与有状态回话Bean门面 有状态与无状态回话Bean门面的重要差别 关于门面模式使用的警告 ...
- 门面模式的典型应用 Socket 和 Http(post,get)、TCP/IP 协议的关系总结
门面模式的一个典型应用:Socket 套接字(Socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元.它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息: 连接使用的 ...
- FacadePattern(门面模式)
/** * 外观模式(门面模式) * @author TMAC-J * 外观模式是通过访问一个前台来实现对子系统的访问,其和代理模式的区别是 * 代理模式是通过代理一个类的形式,也就是说一对一的关系 ...
- Tomcat源代码-门面模式(Facade)
从Tomcat源码提炼出设计模式-门面设计模式: 概念 外部访问内部,耦合度增加,不利于扩展.而门面模式在内部基础上进行再度封装,只提供外部想要的方法.这时访问方式由“外部---内部”变为了“外部-- ...
- 说说设计模式~门面模式(Facade)
返回目录 门面模式(Facade)属于结构型模式的一种,它符合面向对象的封装原则,但又不符合开闭原则,呵呵,今天我们主要说它的优点,不谈缺点. 定义 门面模式,是指提供一个统一的接口去访问多个子系统的 ...
- JAVA设计模式之门面模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述门面(Facade)模式的: 门面模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面对象进行.门面模式提供一个高层次的接口 ...
- 大熊君说说JS与设计模式之(门面模式Facade)迪米特法则的救赎篇------(监狱的故事)
一,总体概要 1,笔者浅谈 说起“门面”这个设计模式其实不论新老程序猿都是在无意中就已经运用到此模式了,就像我们美丽的JS程序员一样不经意就使用了闭包处理问题, function Employee(n ...
- 【读书笔记】读《JavaScript设计模式》之门面模式
一.前言 门面模式,也称Facade(外观)模式.核心的两点作用—— 1> 简化类的接口(让接口变得更加容易理解.容易应用.更加符合对应业务),来掩盖一个非常不同或者复杂的实现 2> 消除 ...
- Java 门面模式 浅析
Java中的门面模式,一般来说他的用途是隐藏一些不希望用户看到的东西,比如方法,变量,并且这些变量是不能够设置成私有的,因为在系统内部有些地方需要调用.在Tomcat的HttpServletReque ...
- IOS设计模式之二(门面模式,装饰器模式)
本文原文请见:http://www.raywenderlich.com/46988/ios-design-patterns. 由 @krq_tiger(http://weibo.com/xmuzyq) ...
随机推荐
- 题解 CF896C 【Willem, Chtholly and Seniorious】
貌似珂朵莉树是目前为止(我学过的)唯一一个可以维护区间x次方和查询的高效数据结构. 但是这玩意有个很大的毛病,就是它的高效建立在数据随机的前提下. 在数据随机的时候assign操作比较多,所以它的复杂 ...
- POJ——T 1986 Distance Queries
http://poj.org/problem?id=1986 Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 14383 ...
- 软件project总结
软件project的文档完结了.在这里面学到了好多东西.也通过它分析了对机房收费系统进行了更加具体的分析.尽管早就明确了之间的联系,可是越温习越体会到逻辑的重要性和全心全意为人民服务的精神. 这些文档 ...
- 学习笔记 Java_静态_继承 2014.7.12
一.静态 1.构造函数: 特点: 1. 函数名和类名同样. 2. 不用定义返回值类型(和void不是一回事,而构造函数是根本不用定义返回值类型). 3. ...
- 积跬步,聚小流------Bootstrap学习记录(2)
现阶段开启每一次新的征程,已然离不开"Hello World"的习惯仪式.这次自然也不例外.先来看下给出的官网给出的演示样例: 1.bootstrap官网提供的html基本模板代码 ...
- 直播聊天室,点亮效果,jquery实现
1.css #like_area img{ width: 30px; height: 30px; position: absolute; bottom: 100px; left: 60%; margi ...
- 2015北京网络赛 G Boxes BFS+打表
G Boxes 题意:n个位置摆有n个箱子,每次移动只能把相邻的垒起来,且上面的必须小于下面的.求摆成升序需要移动多少步. 思路:这里的n很小,只有7.但是bfs最快的情况需要2s左右,所以就打表了. ...
- C++ BigInteger模板
#include <cstdio> #include <cstring> #include <string> #include <iostream> # ...
- Windows环境下VMware虚拟机的自启动与自动关机--命令行操作
.设置开机免密登录系统 1. 按下Windows + R 组合键,输入“netplwiz”,点击回车. 2. 去除需要密码登录的勾. 3. 如果需要密码,输入密码,点击确认. 二.编辑vmware ...
- 如何批量ping地址查看网络是否畅通
测试环境搬迁后,需要批量去ping所有机器的IP,看网络是否畅通 测试思路: [weblogic@pays03pre_BankVerify luyantest]$ ping -c 1 172.29.1 ...