享元

  • 重用已被创建的对象
    /**
     * 棋子
     */
    function Chess(color)
    {
        //颜色
        this.color = color;
        
        /**
         * 初始
         */
        function init()
        {
            console.log('创建'+color+'棋子')
        }
        
        //坐标
        this.point = function(x,y)
        {
            console.log(x+':'+y)
        }
    }
    
    
    
    /**
     * 对象池
     */
    function Factory(){}
    
    Factory.objects = {};
    
    Factory.get = function(color)
    {
        var obj = Factory.objects[color];
        
        if(obj == null)
        {
            obj = new Chess(color);
            Factory.objects[color] = obj;
        }
        
        return obj;
    }
    
    
    /**
     * 使用享元模式
     */
    
    var c1 = Factory.get('红色')
    
    var c2 = Factory.get('红色')
    
    var c3 = Factory.get('黑色')
    
    console.log(c1 == c2)  //输出:true          
    
    console.log(Factory.objects) //输出:Object {红色: Chess, 黑色: Chess}

你可能感兴趣的:(享元)