javascript如何设计模式之享元模式原理与使用方法讲解

  介绍

本篇内容主要讲解“javascript如何设计模式之享元模式原理与使用方法讲解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习”javascript如何设计模式之享元模式原理与使用方法讲解”吧!

Java可以用来干什么

Java主要应用于:1。网页开发;2。Android开发;3。客户端开发;4。网页开发;5。企业级应用开发;6。Java大数据开发;7。游戏开发等。

享元模式说明

<强>定义:用于解决一个系统大量细粒度对象的共享问题:

<强>关健词:分离跟共享;

<强>说明:享元模式分单纯(共享)享元模式,以及组合(不共享)享元模式,有共享跟不共享之分;单纯享元模式,只包含共享的状态,可共享状态是不可变,不可修改的,这是享元的内部状态,当然有外部状态就有外部状态,外部状态是可变的,不被共享,这个外部状态由客户端来管理,是可变化的;外部状态与内部状态是独立分开的,外部状态一般作为参数传入享元对象内,但不会影响内部状态的值;外部状态,一用用于获取共享的享元对象,或多或少与内部状态有点关联;比如从用户数据表中获取数据,传入一个外部变量用户名,再根据这个用户名,获取该用户所有对象状态信息;

组合享元模式,配置组合模式来使用,共享部分只做个叶子节点,而组合部分是不必共享的,因为共组部分的子叶节点元素已经被缓存,组合部分相当一个分组分类的作用;

享元模式一般会与工厂模式相结合使用,用于管理缓存的创建跟维护,享元共享元素的创建一般在工厂类里创建;

享元模式主要用于对象的共享,使具有相似对象,或对象间具有太多相似细粒度的状态,能共享已经创建的对象,减少对象的创建,减少对内存的占用,提升优化性能,

一种场景:

 javascript如何设计模式之享元模式原理与使用方法讲解

享元模式结构图:

 javascript如何设计模式之享元模式原理与使用方法讲解

像第一张的情况,就可以使用享元模式,因为后两排的状态组合,可能在实体对应中,多次存在,这时就可以使用享元的共享特性,来减少对象的创建,如有相同的状态或组合,就可以获取缓存的状态,减少对象重复创建,减少内存占用;

<强>实例场景:

1祝辞。系统各种角色权限分配,

2祝辞。系统出现很多种状态,或组合状态需要对应的,而且这种对应,可以发生很多种其他类型对象上面的,就可以使用享元模式;

实例源码:单纯(共享)享元

1。自定义的JavaScript散列表:

function 散列表(),{   时间=this.values 才能;[];   }      时间=Hashtable.prototype.getJson 函数(),{   return  this.values;   }      时间=Hashtable.prototype.add 函数(键,值),{   if 才能;(! this.contain(关键),{   ,,,this.values.push({键:键,值:价值});   ,,}   }      时间=Hashtable.prototype.contain 函数(关键),{   for 才能;(idx 拷贝this.values), {   ,,,var  json =, this.values [idx];   ,,,if  (==json.key 键),{   ,,,,,return 真实;   ,,,}   ,,}   return 才能;假;   }      时间=Hashtable.prototype.get 函数(关键),{   var 才能;结果;   for 才能;(idx 拷贝this.values), {   ,,,var  json =, this.values [idx];   ,,,if  (==json.key 键),{   ,,,,,result =, json;   ,,,,,休息;   ,,,}   ,,}   return 才能;结果;   }      时间=Hashtable.prototype.delete 函数(关键),{   for 才能;(idx 拷贝this.values), {   ,,,var  json =, this.values [idx];   ,,,if  (==json.key 键),{   ,,,,,delete  this.values [idx];   ,,,,,休息;   ,,,}   ,,}   }      时间=Hashtable.prototype.set 函数(键,值),{   if 才能;(this.contain(关键),{   ,,,this.delete(关键);   ,,,this.values.push({键:键值:价值});   ,,}   }

2。享元方法:

function 轻量级选手(一个),{   时间=this.stateOne 才能;;   }      时间=Flyweight.prototype.operate 函数(){   ,var  date =, new 日期();   console.log才能(this.stateOne  +, & # 39; & # 39;, +, math . random ());   };

javascript如何设计模式之享元模式原理与使用方法讲解