主頁

JavaScript 设计模式之代理模式

JavaScript设计模式之代理模式 介绍 使用者无权访问目标对象 中间加代理, 通过代理做授权和控制 举例 代理模式, 用户无权直接访问, 需要找一个代理人间接进行访问, 例如公司内网,当你在家提交代码的时候,你必须使用VPN做为代理,访问公司内网, 完成相关工作 还有就是下面代码示例, 明星经纪人, 外界访问明星,必须经过经纪人,例如你要邀请明星做演出,你不会直接和明星谈论价格,需要通过经纪人来完成此项操作。 UML类图 代码 class ReadImg { constructor(filename) { this.filename = filename; this.loadFromDisk(); } displ...

阅读更多

JavaScript 设计模式之装饰者模式

JavaScript设计模式之装饰者模式 介绍 为对象添加新功能 不改变其原有的结构和功能 举例 正如这个模式的名字一样,装饰一个原有的对象,装饰的意思就是不改变原有对象的东西,只是新增。 现实生活中的例子有很多,比如手机壳, 手机的所有功能正常使用, 新增手机壳的一些属性, 还有灯罩, 灯的功能完全不影响,新增灯罩的功能。 UML类图 代码 class Cirlce { draw () { console.log('画圈') } } class Decorator { constructor (circle) { this.circle = circle } draw () { this.circle.draw() ...

阅读更多

JavaScript 设计模式之适配器模式

JavaScript设计模式之适配器模式 介绍 旧接口与使用者不兼容 中间加一个适配转换接口 举例 使用mac的人都知道,mac的usb接口和目前市场上流行的接口不太一样,需要使用一个转换器来连接, 这个转换器就相当于程序中的适配器。 UML类图 代码 class Adaptee { specificRequest() { return 'mac版usb接口' } } class Target { constructor () { this.adaptee = new Adaptee() } request () { let info = this.adaptee.specificRequest() retu...

阅读更多

JavaScript 设计模式之工厂模式

JavaScript设计模式之工厂模式 介绍 ​工厂模式主要用于实例化对象,它抽象了创建具体对象的过程。当你遇到new关键字的时候就可以考虑考虑是否可以使用工厂模式。 举例 当你去KFC买汉堡时,你只需要点餐付钱,之后等着服务员叫号就行。这个过程就可以看做是应用工厂模式的情况,你不用自己去做汉堡吧,做汉堡(new Hamburger())的方法被封装在了KFC商店里。你只需要点餐付钱(可以看做汉堡店给你提供的方法),就可以吃到美味的汉堡包。 UML类图 代码 class Product { constructor(name) { this.name = name this.createTime = Date.now() } fun1 () { c...

阅读更多

JavaScript 常用设计模式(一)

javaScript 常用的设计模式(一) 1. 设计模式的历史 ​ 设计模式起源于建筑行业,一位名叫Alexander的建筑师发现并总结了一些建筑行业的设计模式。在20世纪90年代,准确地说是1995年,由于Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides合著的《设计模式–可复用面向对象软件的基础》一书的出版,正式掀开了软件业设计模式的序幕,这本书的四位作者被世人称为四人组,也有人将其称为”四人帮”,也就是大家常见的GoF(Gang of Four)。 2. 什么是模式 ​ 设计模式是一套被 反复使用、多数人知晓、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解并...

阅读更多

vue组件间通信

vue组件间通信 1、 props 和 $emit ​ props: 主要用在父组件向子组件传递信息的时候,它既可以传递基本类型的数据,也可以传递数组或对象等引用类型的数据,但对于js引用类型, 父子组件会使用同一个数据,比较容易造成数据的混乱。 ​ $emit: 子组件通过自定义函数的方式向父组件返回信息 用法 <!--父组件--> <template> <div id="app"> <!--基本类型--> <child :message='message' @childEmit='childEmit'></child> <!--props为对...

阅读更多