![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 75
jensonliu
第一次 是小白
展开
-
ES6 | Class Mixin实现多继承
Mixin 译为 “混入” “混合” 早期这个概念经常用于两个对象的拷贝、合并 let a = { name: 'a' } let b = { age:19, // name : 'b' 会覆盖a的name } let obj = { ...a, ...b }; 实现 // 拷贝属性 // target为子类 source为继承类 function copyPro...原创 2019-11-22 16:29:05 · 1066 阅读 · 0 评论 -
JS | AOP编程
AOP AOP(面向切面编程)的主要作用是把一些跟核心业务逻辑模块无关的功能抽离出来,这些跟业务逻辑无关的功能通常包括日志统计、安全控制、异常处理等。把这些功能抽离出来之后, 再通过“动态织入”的方式掺入业务逻辑模块中。 AOP的好处 AOP的好处首先是可以保持业务逻辑模块的纯净和高内聚性,其次是可以很方便地复用日志统计等功能模块。 例子 // 定义before 和 after Func...原创 2019-11-11 18:12:30 · 109 阅读 · 0 评论 -
ES6 & ES7 - Module
ES6 - Module 不用default导出 // A.js export function a(){ console.log('aaaa') } export function b(){ console.log('bbb') } export const c = 10; 或: function a(){ console.log('aaaa') } function b(){ ...原创 2019-11-10 13:17:18 · 125 阅读 · 0 评论 -
尾递归和尾递归的优化
概念 首先有一个概念是尾调用,就是指某个函数的最后一步是调用另一个函数,如下 function f(x){ return g(x); } 而下面几种情况都不属于调用 1. function f(x){ let y = g(x); return y; } 2. function f(x){ return g(x) + 1; } 3. function f(x){ g(x);...原创 2019-10-16 17:01:36 · 151 阅读 · 0 评论 -
设计模式 | 单例模式
1. 在原型中保存唯一实例,使用静态方法获取 function Singleton(name){ this.name = name; } Singleton.prototype.obj = null; Singleton.getInstance = function(name){ let instance = this.prototype.obj; ...原创 2019-08-23 01:19:10 · 66 阅读 · 0 评论 -
设计模式 | 工厂模式
ES5 简单工厂模式 let userFactory = function(role){ function User(opt) { this.name = opt.name; this.viewPage = opt.viewPage; } switch (role) { case 'SuperAdmin': retu...转载 2019-09-17 23:11:33 · 116 阅读 · 0 评论 -
设计模式 | 代理模式
代理模式 代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。 在我的理解中,es6中的Proxy可以很好的诠释这一设计理念,当然从名称也可以看出来了。 代理模式共有三种:保护代理、虚拟代理、缓存代理 应用场景 保护代理 即代理类对操作进行拦截,对操作进行过滤或处理后,调用真正得实体类进行操作。 例: 每个User类有多...原创 2019-09-26 23:35:17 · 86 阅读 · 0 评论 -
设计模式 | 装饰者模式
ES7中提供了一个装饰器注解Descriptor: 安装 npm i babel-plugin-transform-decorators-legacy babel-register --save-dev 在.babelrc文件中添加插件信息 "plugins": ["transform-decorators-legacy"], 修饰类 给修饰的类添加上blood属性和set/get方法,装饰...原创 2019-10-08 21:14:01 · 212 阅读 · 0 评论 -
设计模式 | 观察者模式 & 发布者订阅者模式
观察者模式 let publisher = { // 订阅者列表 list:[], // 新增订阅者 listen:function(user,type){ if(!this.list[type]){ this.list[type] = [] } this.list[type].push(user) }, // 通知某一主题的信息 not...原创 2019-10-09 00:21:14 · 111 阅读 · 0 评论