java代码套路,开发中比较容易理解的代码套路
前言
今天给大家纯手工整理一下本人在开发中认为比较有用的代码思想套路,欢迎大家可以与我一同讨论
链式编程
所谓链式编程即是函数调用后返回对象本身
var calculator = {
total:0,
add (n) {
// 模拟执行功能
this.total += n;
// 为了能在调用完add()后继续.substruct() 因此我们返回对象本身
return this;
},
subtract(n) {
this.total -= n;
return this;
}
}
// 调用
calculator.add(5).add(5).subtract(2).total; // 8
高阶函数应用-(添加数据并提供删除方法)
举个栗子:我们有一些业务需要添加元素到数组中,但同时也可能过会又要将其移除。更好的方式是我们把他们封装成函数,并利用高阶函数闭包的特性来标记删除,这样就减少了去查找这个元素的问题了
var students = [];
function addStudent (stu) {
// 加入 通过形参标记该学员
students.push(stu);
return function () {
// 利用闭包获取stu
var index = students.indexOf(stu);
// 删除该学生
students.splice(index);
}
}
var stu = { name:'小明' };
// 试用一下
var stu1 = addStudent(stu);
var stu2 = addStudent({name:'小红'});
// 一年想到需要删除了,我们不需要查找他们了
stu1(); // 删除小明
stu2(); // 删除小红
利用Promise链切入(延迟执行)
Promise不仅可以帮助做异步流程控制,同时啥步流程控制也能做,当然更重要是延迟执行和异步中保证顺序,比如步骤A到步骤B,中间我们要等等,也步确定啥时候完成,因此可以先定义好两个步骤,把A步骤的resolve保存起来等待需要调用的时候调用即可(不要试图和回调函数去比较,因为Promise本身就是为了解决回调函数不优雅的问题)
// 任务A
function task1() {
setTimeout(function(){
// 第一件事
},2000);
}
function task2() {
setTimeout(function(){
// 第二件事
},1000);
}
// 我先让第一件事执行,并保存其实例和resolve
var token = (function(){
var next;
var p = new Promise(function(resolve){
// 获取放行的钥匙
next = resolve;
task1();
});
return {
promise:p,
next:next
}
})();
// 定义第二件事
token.promise.then(task2);
// 想让第二件事执行的话,看我心情咯,来个定时器吧
setTimeout(function () {
// 就现在吧,做第二件事吧(延迟执行)
token.next();
},Math.random() * 1000 );
通过中间层来解决问题(装饰者模式)
不是有句话是JS中任何问题都可以通过中间层来解决,比如我们写了一个吃饭的功能,突然想起来饭前要洗手,那么怎么做呢?用你想想的中间层来对比我写的中间层,想想看有什么不同?!
var obj = {
eat:function () {
console.log('我愉快的吃饭..');
}
}
obj.wash = function () {
console.log('洗手');
}
// 装饰者模式
obj.plus = function (fn1,fn2) {
fn1();
return fn2();
}
// 突然学习到《《《饭前要洗手》》》,怎么办?
obj.plus(obj.wash,obj.eat);
单例模式
有时我们需要全局中有一个唯一的实例,而不是new一次就一个的时候,就用下面代码吧,不过细节要注意以下
var Leader = (function() {
var instance; // 闭包不让外部访问
return function (name) {// 构造函数
if (instance) return instance;
instance = this;
this.name = name;
}
})();
new Leader('凃老师'); // { name:'凃老师'}
new Leader('启道学院'); // { name:'凃老师'}
java代码套路,开发中比较容易理解的代码套路相关推荐
- delay在java中有什么用_DelayQueue怎么在Java多线程并发开发中使用
DelayQueue怎么在Java多线程并发开发中使用 发布时间:2020-12-05 17:29:31 来源:亿速云 阅读:56 作者:Leah 这篇文章给大家介绍DelayQueue怎么在Java ...
- Java ME游戏开发中,碰撞检测算法在Java?ME中的实现(
2019独角兽企业重金招聘Python工程师标准>>> 在Java ME游戏开发中,碰撞检测算法在Java?ME中的实现(百搜技术) 在Java ME游戏开发中,经常需要进行碰撞检测 ...
- iOS开发中经常用的实用代码合集
iOS开发中经常用的实用代码合集 本文整理了,在iOS开发中我们所遇到一些开发问题的技巧类的代码,让你在开发过程中避免了很多弯路,希望能给你的开发带来帮助和启发. 1.判断邮箱格式是否正确的代码: / ...
- 拒绝内存泄露,谈一些纯代码iPhone开发中的内存管理
笔者刚从学校出来,算上实习期,接触iPhone开发已有半载,也算是对iPhone(iOS)开发中的内存管理有了些认识,由于开发中一直没有用Interface Builder,本文就谈谈纯代码iPhon ...
- iOS开发中一些有用的小代码
1.判断邮箱格式是否正确的代码: //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @&quo ...
- java dao层代码生成器_实际开发中 dao、entity的代码怎样自动生成?一款工具送给你...
01 关注"一猿小讲"朋友,都知道以往的文章一直倡导拒绝 CRUD,那到底什么是 CRUD?今天咱们就聊聊 Java 妹子小猿与数据库老头交互的事儿. 产品小汪铿锵有力的说:小猿同 ...
- java安装_Java开发中更多常见的危险信号
java安装 在< Java开发中的常见危险信号>一文中,我介绍了一些不一定本身就是错误或不正确的做法,但它们可能表明存在更大的问题. 这些"红色标记"类似于" ...
- 分享.NET开发中经常使用到的代码片段 完全从实际项目中提取出来,也可被反反复复的重复借用...
几年前,一篇<ASP.NET开发人员经常使用的三十三种代码>非常流行,它总结了一些经常在ASP.NET开发中使用到的代码,直接可以拿来使用.今天重读这篇文章,有感而发,善于总结也是进步,于 ...
- 实际开发中 dao、entity的代码怎样自动生成?一款工具送给你
01 关注"一猿小讲"朋友,都知道以往的文章一直倡导拒绝 CRUD,那到底什么是 CRUD?今天咱们就聊聊 Java 妹子小猿与数据库老头交互的事儿. 产品小汪铿锵有力的说:小猿同 ...
最新文章
- 2019 .NET China Conf之我逛魔都
- Windows服务无法引用.dll的错误
- 信息学奥赛一本通(1197:山区建小学)
- HtmlHelper让我们的效率更高
- POST 一张 图像的调试来认识 http post
- NVIDIA DeepStream5.0官方总结(改动版)
- python基础--闭包函数和装饰器
- 前端面试-webpack篇
- [f]class获取元素函数
- 语音芯片c语言程序,51单片机 语音芯片YF017 驱动函数以及简单调用例程
- 组件、控件和插件的区别
- 可视化丨用数据分析福尔摩斯探案集
- Uber是如何管理大规模数据工作流的?
- [TCP]基于TCP的心跳和加密设计
- 【8086汇编】DOS系统中 edit 文本编辑器详解
- 最简单三级管振荡分析(自由多谐振荡器电路)
- 谷歌 ARCore 就是低配版 Tango,它比苹果 ARKit 好在哪?
- 计算机中cat是什么命令,cat(操作系统命令)_百度百科
- 电子商务网站开发流程[转]
- 浙大1018 Be carefull
热门文章
- MPB:邓晔、王尚等-​环境样本中的细菌总量测定—流式细胞法
- ​纳米孔测序揭示冻土冻融对土壤微生物群落变化的影响
- Microbiome:高通量测序全面检测生物或环境样本的单细胞真核生物和寄生虫
- 宏基因组实战3. MEGAHIT组装拼接及quast评估
- R语言生成词云(wordcloud)实战
- seaborn使用violinplot函数可视化水平小提琴图(Make Horizontal Violin Plot with violinplot in Seaborn)
- pandas使用groupby函数、agg函数获取每个分组聚合对应的标准差(std)实战:计算分组聚合单数据列的标准差(std)、计算分组聚合多数据列的标准差(std)
- Python使用pandas的crosstab函数计算混淆矩阵并使用Seaborn可视化混淆矩阵实战
- Moving Towards Third‐Generation Sequencing Technologies 迈向第三代测序技术
- java 图形化库_java图形界面之图形化按钮