JavaScript设计模式-17.装饰者模式(下)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>javascript高级语法17-装饰者模式下</title>
</head>
<body>
<div id="demo2"> </div> <script type="text/javascript">
//装饰者可以用在类上,也可以用在函数上
function demo1(){
//写一个装饰者函数,函数的目的是把目标函数的返回值变成大写
function upperCase(fun){
return function(){
return fun().toUpperCase();
}
}
//被封装的函数
function getDate(){
return new Date().toString();
}
//执行装饰
var getDateCaps = upperCase(getDate);
document.write(getDate());
document.write("<br>")
document.write(getDateCaps());
/*如果原有的功能不适合你的项目,需要大量扩充原油功能
* 并且不想改变原有的接口,那么可以用装饰者模式。
*/
}
//demo1(); function demo2(){
//装饰者完成对函数性能测试的任务
var listBuilder = function(el,listSize){
this.el = document.getElementById(el);
this.size = listSize;
//创建列表
this.Buildlist = function(){
var root = document.createElement("ol");
this.el.appendChild(root);
for(var i=0;i<this.size;i++){
var li = document.createElement("li");
root.appendChild(li);
}
}
};
var list = new listBuilder("demo2",8000);
//list.Buildlist();
//利用装饰者检测函数执行的时间 var simpleProfiler = function(component){
this.component = component;
this.ListBuilder = function(){
var startDate = new Date().getTime();
this.component.Buildlist()
var endDate = new Date().getTime();
alert(endDate - startDate);
}
}
//new simpleProfiler(list).ListBuilder();
//改造为通用的装饰者,可以完成所有函数的效率测试。 var simpleProfiler2 = function(component){
this.component = component;
this.action = function(methodName){
var self= this;
var method = component[methodName];
//如果是函数那就进行装饰
if(typeof method == "function"){
var startDate = new Date().getTime();
method.apply(self.component,arguments);
var endDate = new Date().getTime();
alert(endDate - startDate);
}
}
} new simpleProfiler2(list).action("Buildlist"); }
demo2(); </script>
</body>
</html>
JavaScript设计模式-17.装饰者模式(下)的更多相关文章
- 再起航,我的学习笔记之JavaScript设计模式13(装饰者模式)
装饰者模式 装饰者模式(Decorator): 在不改变原对象的基础上,通过对其进行过包装拓展(添加属性高或者方法)使原有对象可以满足用户的更复杂需求. 如果现在我们有个需求,需要做一个提交表单,当我 ...
- Javascript设计模式之装饰者模式详解篇
一.前言: 装饰者模式(Decorator Pattern):在不改变原类和继承的情况下动态扩展对象功能,通过包装一个对象来实现一个新的具有原对象相同接口的新的对象. 装饰者模式的特点: 1. 在不改 ...
- JavaScript设计模式(装饰者模式)
一.模拟传统面向对象语言的装饰者模式: 假设我们在编写一个飞机大战的游戏,随着经验值的增加,我们操作的飞机对象可以升级成更厉害的飞机,一开始这些飞机只能发射普通的子弹,升到第二级时可以发射导弹,升到第 ...
- JavaScript设计模式(8)-装饰者模式
装饰者模式 1. 作用: 可用来透明地把对象包装在具有同样接口的另一对象之中,这样可以给一个方法添加一些行为,然后将方法调用传递给原始对象. 可用于为对象增加功能,用来代替大量子类. 装饰者对其组件进 ...
- JavaScript设计模式-16.装饰者模式(上)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- javascript设计模式之装饰者模式
/* * 装饰者模式提供比继承更有弹性的替代方案 * 在不改变原构造函数的情况下,添加新的属性或功能 */ //需要装饰的类(函数) function Macbook() { this.cost = ...
- 学习javascript设计模式之装饰者模式
1.装饰者模式定义:给对象动态添加职责的方式称为装饰者(decorator)模式. js如何实现装饰者模式 通过保存原函数引用方式改写某函数 window.onload = function(){al ...
- Java 设计模式泛谈&装饰者模式和单例模式
设计模式(Design Pattern) 1.是一套被反复使用.多人知晓的,经过分类编目 的 代码设计经验总结.使用设计模式是为了可重用代码,让代码更容易维护以及扩展. 2.简单的讲:所谓模式就是得到 ...
- C#设计模式(9)——装饰者模式(Decorator Pattern)
一.引言 在软件开发中,我们经常想要对一类对象添加不同的功能,例如要给手机添加贴膜,手机挂件,手机外壳等,如果此时利用继承来实现的话,就需要定义无数的类,如StickerPhone(贴膜是手机类).A ...
随机推荐
- OpengGL中图形绘制先后问题
OpengGL中图形绘制先后问题 在opengl中,场景绘制总有个先后的顺序,也有个程序先后的问题,图形程序在前在后,对最终的图形的影响如何? (1)设置图中的点(蓝色)与线条(浅蓝)z分量都是0,如 ...
- .NET框架源码解读之启动CLR
前面提到在SSCLI环境里运行.NET程序的时候,执行的命令类似java程序的执行过程,即通过clix程序解释执行.net程序.这个过程看起来跟在windows环境下执行.net程序表面上看起来不一样 ...
- String调用Array相关方法——有点古怪
这个系列的前面几篇文章中有谈到在一个Object上使用apply.call等方法操作另一个Object的方法,今天我们来学习怎么样在String上调用Array相关方法. 在许多方面,字符串表现的好像 ...
- Buffer Pool--SQL Server:Buffer Manager 对象
--============================================================== --参考链接:http://technet.microsoft.com ...
- 新手上路,django学习笔记(1) 环境部署
很多年没写代码了,以前学的C#,用ASP.NET,但是最近几年没落了,JAVA在崛起,最近感觉Python比较火,总是在各种技术场合听到Python,或者身边的朋友在讨论Python,所以突然想学习一 ...
- centos 下wps 与goland 不能输入中文的解决办法
输入法:CentOS7自带ibus,如果你用的是fcitx请在对应的地方进行修改 系统:CentOS7,这个方案应该适用于大多数Linux发行版本 intelliJ goland中文输入法问题解决 首 ...
- unity 序列化和反序列化
什么是序列化和反序列化(1)序列化是指把对象转换为字节序列的过程,而反序列化是指把字节序列恢复为对象的过程:. (2)序列化:对象序列化的最主要的用处就是在传递和保存对象的时候,保证对象的完整性和可 ...
- cesium编程入门(四)界面介绍及小控件隐藏
感性认识 界面介绍,viewer Geocoder : 查找位置工具,查找到之后会将镜头对准找到的地址,默认使用bing地图 Home Button :视角返回初始位置. Scene Mode Pic ...
- win32拖拽编程
本文由作者邹启文授权网易云社区发布. 在邮箱大师PC版中,我们需要实现一个功能:账号和邮件夹拖拽排序. 准备 封装win32 API.我们使用到的API有, ImageList_Create.Imag ...
- 前端基础--css基本语法,选择器
一.css概述 CSS(Cascading Style Sheet)层叠样式表,定义如何显示HTML元素,给HTML设置样式,让它更加美观.当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式 ...