设计模式七 享元模式、代理模式

142 阅读1分钟

享元模式

享元模式(Flyweight Pattern) 也叫 蝇量模式: 运用共享技术有效地支持大量细粒度的对象。主要考虑内存而非效率

常用于系统底层开发,解决系统的性能问题。像数据库连接池,里面都是创建好的连接对象,在这些连接对象中有我们需要的则直接拿来用,避免重新创建。

享元模式能够解决重复对象的内存浪费的问题,当系统中有大量相似对象,需要缓冲池时。不需总是创建新对象,可以从缓冲池里拿。这样可以降低系统内存,同时提高效率。

image.png

将相同部分抽象出来,符合开放封闭模式

代理模式

使用者无权访问目标,中间加代理,通过代理做授权和控制

image.png

场景:

(1)网页事件代理

image.png

(2)JQ $.proxy

image.png

image.png

(3)Proxy

let start={
            name:'xhn',
            age:20,
            tel:1573403471
        }
let agent = new Proxy(start,{
    get:function(target,key){
        if(key ===tel ){
            // 经纪人自己的手机号
            return '25464464848'
        }
        if(key ==='price'){
            return 12000
        }
        return target[key]
    },
    set:function(target,key,val){
        if(kry === 'customPrice'){
            if(val < 100000){
                throw new Error('价格太低')
            }else{
                target[key] = val;
                return true;
            }
        }
    }
})