前端设计模式4

109 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第8天,点击查看活动详情

##享元模式 享元模式是一种用于性能优化的模式,‘fly’在这里是苍蝇的意思意为蝇量级,享元模式的核心是运用共享技术来有效支持大量细粒度的对象,如果系统中因为创建大量类似的对象而导致内存占用度过高,享元模式就非常有用,在javascript中,浏览器特别是移动端的浏览器分配的内存并不算多,如何节省内存就成了一件非常有意义的事情 假设有个内衣工厂,目前的产品有50中男式内衣和50中女士内衣,为了推销产品,工厂决定生产一些塑料模特来穿上内衣拍广告,正常情况需要50个男模特和50个女模特,然后让他们每人分别穿上一件内衣来拍照 会用到享元模式的情况 内部状态存储于对象内部 内部状态可以被一些对象共享 内部状态独立于具体的场景,通常不会改变 外部状态取决于具体的场景,并根据场景而变化,外部状态不能被共享 性别是内部状态,内衣是外部状态,通过区分这两种张状态,大大减少了系统中的对象数量,通常来讲,内部状态有多少种组合,系统中变最多存多少个对象,因为性别通常只有男女两种,所以该内衣厂商最多需要2个对象

##职责链模式 职责链模式的定义是:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这些对象连成一条链,并沿着这条传递链该请求,直到有一个对象处理它为止。职责链模式的名字非常形象,一系列可能会处理请求的对象被连成一条链,请求在这些对象之间依次传递,直到遇到一个可以处理它的对象,我们把这些对象成为链的节点 职责链模式更方便扩展方法 例:假设我们负责一个售卖手机的电商网站,经过分别交纳500元定金和200元定金的两轮预定后(订单已在此时生成),现在已经到了正式购买的阶段,公司针对支付过定金的用户有一定的优惠政策。在正式购买后,已经支付过的500元定金的用户会收到100元优惠卷,200元定金的用户会收到50元优惠卷,而之前没有支付定金的用户只能进入普通模式购买,也就是没有优惠卷,且在库存有限的情况下不一定保证可以买到。