一個好的程序,有一個公用標准,叫高內聚,低耦合,但是,這是一個度的把握,再高的內聚性也避免不了溝通和交際,一味地抽象,繼承是不科學的,我們應該尋找一種更好地解決方法,恰恰在這類設計模式,前人已經替我們做好了鋪墊。
結構?什麼是結構,在建築上是承重的部分,意思就是骨架,只有支好一個好的骨架,才能讓我們更有效的工作,在面向對象的設計中,類是一根根骨頭,將這些東西連接起來的是“關系”,怎麼處理這些關系是我們現在這種設計模式要學習的!
還是老樣子,具體的例子大家去看書就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"]); //此處將不會有任何輸出
}
}