중개자

2398 단어
  • 여러 객체 간의 상호 작용 처리
  •     /**
         *  ( )
         */
        function Mediator()
        {
            
            /**
             *  
             */
            var storage = {};
            
            
            /**
             *  
             */
            this.register = function(object)
            {
                storage[object.name] = object;
                object.mediator      = this;
            }
            
            
            /**
             *  
             */
            this.send = function(data,form,to)
            {
                if(to)
                {
                    to.receive(data,form)
                }
                else
                {
                    for(var i in storage)
                    {
                        if(storage[i] !== form)
                        {
                            storage[i].receive(data,form)
                        }
                    }
                }
            }
        }
        
        
        
        /**
           *  
           */
        function Person(name)
        {
            
            /**
             *  
             */
            this.name = name;
            
            
            /**
             *  
             */
            this.mediator;
            
            
            /**
             *  
             */
            this.send = function(data,to)
            {
                this.mediator.send(data,this,to)
            }
            
            /**
             *  
             */
            this.receive = function(data,form)
            {
                console.log(this.name+' -----------'+form.name+' :'+data)
            }
        }
        
        
        
        var xiaoming = new Person(' ');
        var zhangsan = new Person(' ');
        var lisi     = new Person(' ');
        
        var mediator = new Mediator();
        mediator.register(xiaoming);
        mediator.register(zhangsan);
        mediator.register(lisi);
        
        
        xiaoming.send(' ')         // 
        xiaoming.send(' ',lisi)  // 
    
  •   /**
       *  (MVC)
       */
      function Mediator(view,model)
      {
          /**
           *  
           */
          function init()
          {
              view.setTitle(model.title);
          }
          
          init();
      }
      
      
      /**
       *  
       */
      function View()
      {
          /**
           *  
           */
          this.setTitle = function(data)
          {
              console.log(data)
          }
      }
      
      
      /**
       *  
       */
      function Model()
      {
          
          /**
           *  
           */
          this.title = ' ';
          
      }
      
      
      
      var mediator = new Mediator(new View(),new Model());
  • 좋은 웹페이지 즐겨찾기