乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Composite組合模式

       Coder編程 2021-07-06

      >>返回《C#常用設(shè)計(jì)模式》

      1. 簡(jiǎn)介

      • 定義
        • 組合多個(gè)對(duì)象形成樹(shù)形結(jié)構(gòu)以表示具有部分-整體關(guān)系的層次結(jié)構(gòu)。
        • 組合模式讓調(diào)用程序可以統(tǒng)一對(duì)待單個(gè)對(duì)象和組合對(duì)象
      • 案例
        • 例如文件系統(tǒng)的文件夾和文件結(jié)構(gòu)就是此模式
        • winform中,空間的基類(lèi)是Control類(lèi)型,子類(lèi)有的是單一類(lèi)型(Textbox),有的是容器類(lèi)型(Panel),Add和Remove方法使用暴露Collections的方式,都有方法(eachChild)

      2. 示例

      namespace WindowsFormsApplication1
      {
          //抽象的部件類(lèi)描述將來(lái)所有部件共有的行為
          public abstract class Component
          {
              protected string name;
              public string Name
              {
                  get
                  {
                      return name;
                  }
                  set
                  {
                      name = value;
                  }
              }
              //添加部件
              public abstract void Add(Component component);
              //刪除部件
              public abstract void Remove(Component component);
              //遍歷所有子部件
              public abstract void eachChild();
          }
      
          //組合部件類(lèi)
          public class Leaf : Component
          {
              //葉子節(jié)點(diǎn)不具備添加的能力,所以不實(shí)現(xiàn)
              public override void Add(Component component)
              {
                  throw new NotImplementedException();
              }
      
              //葉子節(jié)點(diǎn)不具備添加的能力必然也不能刪除
              public override void Remove(Component component)
              {
                  throw new NotImplementedException();
              }
      
              //葉子節(jié)點(diǎn)沒(méi)有子節(jié)點(diǎn)所以顯示自己的執(zhí)行結(jié)果
              public override void eachChild()
              {
                  Console.WriteLine("{0}執(zhí)行了..", name);
              }
          }
      
          //組合類(lèi)
          public class Composite : Component
          {
              //用來(lái)保存組合的部件
              List<Component> myList = new List<Component>();
      
              //添加節(jié)點(diǎn) 添加部件
              public override void Add(Component component)
              {
                  myList.Add(component);
              }
      
              //刪除節(jié)點(diǎn) 刪除部件
              public override void Remove(Component component)
              {
                  myList.Remove(component);
              }
      
              //遍歷子節(jié)點(diǎn)
              public override void eachChild()
              {
                  Console.WriteLine("{0}執(zhí)行了..", name);
                  foreach (Component c in myList)
                  {
                      c.eachChild();
                  }
              }
          }
          class Client
          {
              static void Main(string[] args)
              {
                  //構(gòu)造根節(jié)點(diǎn)
                  Composite rootComponent = new Composite();
                  rootComponent.Name = "根節(jié)點(diǎn)";
      
                  //添加兩個(gè)葉子幾點(diǎn),也就是子部件
                  Leaf l = new Leaf();
                  l.Name = "葉子節(jié)點(diǎn)一";
                  Leaf l1 = new Leaf();
                  l1.Name = "葉子節(jié)點(diǎn)二";
      
                  rootComponent.Add(l);
                  rootComponent.Add(l1);
      
                  //遍歷組合部件
                  rootComponent.eachChild();
              }
          }
      }
      

      3. 適用環(huán)境

      • 在具有整體和部分層次的結(jié)構(gòu)中,希望通過(guò)一種方式忽略整體與部分的差異,一致的對(duì)待它們
      • 在一個(gè)使用面向?qū)ο笳Z(yǔ)言開(kāi)發(fā)的系統(tǒng)中要處理一個(gè)樹(shù)形結(jié)構(gòu)時(shí)
      • 在一個(gè)系統(tǒng)總能夠分離出葉子容器對(duì)象,而且它們的類(lèi)型不固定,需要增加一些新的類(lèi)型

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多