C# 程式設計經典300例 實例098 果園實現統一的種植方法 橋接模式

        實例098介紹橋接模式,範例存在兩個變數地點與水果種類,使用橋接模式可以化減多種組合的情況。 


實例描述


北京果園和上海果園都需要種植蘋果和橘子兩種水果,橋接模式可將果園種植方法與水果具體種植方法分離。


輸出「北京果園種植蘋果」、「北京果園種植橘子」、「上海果園種植蘋果」、「上海果園種植橘子」。


實現過程


//抽象水果類


public abstract class Fruit


{


   public abstract void Plant();


}



//具體蘋果類


public class Apple :Fruit


{


   public override void Plant()


   {


       Console.WriteLine(“種植蘋果樹”);


   }


}



//具體橘子類


public class Orange :Fruit


{


   public override void Plant()


   {


       Console.WriteLine(“種植橘子樹”);


   }


}



//抽象果園類


public abstract class Orchard


{


   protected Fruit fruit;


   public Fruit Fruit {set {fruit = value}}


   public abstract void Plant();


}



//北京果園類


public class BJOrchard:Orchard


{


   public override void Plant()


   {


       Console.Write(“北京果園”);


       fruit.Plant();


   }


}



//上海果園類


public class SHOrchard:Orchard


{


   public override void Plant()


   {


       Console.Write(“上海果園”);


       fruit.Plant();


   }


}


main函數代碼如下:


Orchard bjOrchard = new BJOrchard();


bjOrchard.Fruit = new Apple();


bjOrchard.Plant();


bjOrchard.Fruit = new Orange();  


bjOrchard.Plant();



Orchard shOrchard = new SHOrchard();


shOrchard.Fruit = new Apple();


shOrchard.Plant();


shOrchard.Fruit = new Orange();  


shOrchard.Plant();



代碼解析



Orchard類中保存了Fruit對象的引用,Fruit引用決定了Orchard類的Plant方法條用結果,Orchard類不依賴具體的Fruit類的派生類,而是依賴於抽象。



橋接模式主要實現了抽象類與具體類實現部分的分離,主要用於系統可以從多個角度進行分類,此時將各種分類獨立出來,降低了分類之間的耦合。



留言

這個網誌中的熱門文章

異世界NTR web版第三章 觀後感 喧賓奪主 ,反派實力過強

持有縮小技能的D級冒險者,與聖女結婚並加入勇者團隊 漫畫 01-04 觀後感 大我與小我

泛而不精的我被逐出了勇者隊伍 web第三章 觀後感 菲莉真能打; 露娜超爽der