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類的派生類,而是依賴於抽象。
橋接模式主要實現了抽象類與具體類實現部分的分離,主要用於系統可以從多個角度進行分類,此時將各種分類獨立出來,降低了分類之間的耦合。
留言
張貼留言