組合模式(Composite Pattern)


      組合模式主要處理的是客戶在使用組合對象時對其結構的依賴。組合對象內部解決自身的復雜結構,使客戶代碼就像使用簡單對象一樣使用組合對象。
      組合模式又分為安全式的組合模式和透明式的組合模式。安全式的組合模式要求管理聚集的方法只出現在組合對象中,而不出現在簡單對象中。透明式的組合模式要求所有的對象,不論組合對象還是簡單對象,均符合一個固定的接口。
      下例中模擬ASP.NET中的button和panel控件,使用的是安全式的組合模式,類與結構圖的對應關系是:
      IControl = Component
      Button = Leaf
      Panel = Composite
圖1:安全式的組合模式



圖2:透明式的組合模式

     public   class  App
    {
        
public   static   void  Main()
        {
            IControl button1 
=   new  Button();
            Panel panel1 
=   new  Panel();
            panel1.Add(button1);

            Panel panel2 
=   new  Panel();
            panel2.Add(panel1);

            
// 如果沒有組合模式,這里就要很繁瑣的(遍歷每個控件)調用Initialize方法了
            panel2.Initialize();

            Console.ReadLine();
        }
    }

    
public   interface  IControl
    {
        
void  Initialize();
    }

    
public   class  Button : IControl
    {
        
public   void  Initialize()
        {
            Console.WriteLine(
" 初始化Button控件 " );
        }
    }

    
public   class  Panel : IControl
    {
        List
< IControl >  controlList;
        
        
public  Panel()
        {
            controlList 
=   new  List < IControl > ();
        }

        
public   void  Add(IControl control)
        {
            controlList.Add(control);
        }

        
public   void  Remove(IControl control)
        {
            
if  (controlList  ==   null )
            {
                
throw   new  InvalidOperationException( " 控件列表為空 " );
            }
            controlList.Remove(control);
        }

        
public   void  Initialize()
        {
            Console.WriteLine(
" 初始化Panel控件 " );

            
foreach  (var control  in  controlList)
            {
                control.Initialize();
            }
        }
    }


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: