一個好的程序,有一個公用標准,叫高內聚,低耦合,但是,這是一個度的把握,再高的內聚性也避免不了溝通和交際,一味地抽象,繼承是不科學的,我們應該尋找一種更好地解決方法,恰恰在這類設計模式,前人已經替我們做好了鋪墊。 結構?什麼是結構,在建築上是承重的部分,意思就是骨架,只有支好一個好的骨架,才能讓我們更有效的工作,在面向對象的設計中,類是一根根骨頭,將這些東西連接起來的是“關系”,怎麼處理這些關系是我們現在這種設計模式要學習的! 還是老樣子,具體的例子大家去看書就ok,這裡咱們談談擴展的兩種知識: 一:聚合和組合(或者稱為合成) 聚合,是種較弱的關系,例如足球場和觀眾,就是聚合的關系,他們互相獨立,有一場足球賽的時候,他們才聚合到一起。 組合,是種較強的關系,例如人與四肢,人和四肢是不可分割的一部分,他們不以意志轉移為轉移。 再編程中,這兩種關系幫助我們拜托了過多繼承帶來的困擾! 具體應用: 聚合 [csharp] //抽象軟件 abstract class Soft { public abstract void Run(); } //游戲 class Game : Soft { public override void Run() { Console.WriteLine ("運行手機游戲!"); } } //通訊錄 class AdressList : Soft { public override void Run() { Console.WriteLine ("運行手機通訊錄!"); } } //抽象品牌 abstract class Brand { protected Soft soft; //設置軟件 public void SetSoft(Soft soft) { this.soft = soft; } public abstract void Run(); } //品牌N class BrandN : Brand { public override void Run() { soft .Run (); } } //品牌M class BrandM : Brand { public override void Run() { soft.Run (); } } 二:Hashtable 它的中文名字叫哈希表,他是通過key值來控制存入其中的對象,它是種容器,能夠方便檢索,快速查找,簡單的理解就是這樣,我們來看看應用 [csharp] using System; using System.Collections; //使用Hashtable時,必須引入這個命名空間 class hashtable { public static void Main() { Hashtable ht=new Hashtable(); //創建一個Hashtable實例 //key值唯一,value值可以重復. ht.Add("E","e");//添加key/鍵值對 ht.Add("A","a"); ht.Add("C","c"); ht.Add("B","b"); string s=(string)ht["A"]; if(ht.Contains("E")) //判斷哈希表是否包含特定鍵,其返回值為true或false Console.WriteLine("the E key:exist"); ht.Remove("C");//移除一個key/鍵值對 Console.WriteLine(ht["A"]);//此處輸出a ht.Clear();//移除所有元素 Console.WriteLine(ht["A"]); //此處將不會有任何輸出 } }