橋接模式關注如何設計抽象類別!
主要目的是把一個抽象類別與其抽象操作的實現進行分離。
抽象類別處於類階層的頂層位置,它定義了抽象的操作集,階層中的某些子類都為抽象操作集提供了不同的實現,這些操作集在一個介面中,另外還有子類沿著另外的方向,整個設計就是需要使用橋接模式。簡單的說,處於頂層位置的抽象類別的繼承出現多方向,需要使用橋接模式。
using System;
using System.Collections.Generic;
using System.Text;
namespace Bridge
...{
/**//// <summary>
/// 列印方式
/// </summary>
public abstract class PrintMethod
...{
public abstract void Print();
}
/**//// <summary>
/// 橫向方式
/// </summary>
public class Across : PrintMethod
...{
public override void Print()
...{
Console.WriteLine("--");
}
}
/**//// <summary>
/// 縱向方式
/// </summary>
public class Upright : PrintMethod
...{
public override void Print()
...{
Console.WriteLine("|");
}
}
/**//// <summary>
/// 機器
/// </summary>
public abstract class Machine
...{
protected PrintMethod implementor;
public PrintMethod Implementor
...{
set ...{ implementor = value; }
}
public virtual void Print()
...{
implementor.Print();
}
}
/**//// <summary>
/// 印表機
/// </summary>
public class Printer : Machine
...{
public override void Print()
...{
implementor.Print();
}
}
/**//// <summary>
/// 複印機
/// </summary>
public class Copycat : Machine
...{
public override void Print()
...{
implementor.Print();
}
}
class Program
...{
static void Main(string[] args)
...{
Machine machine = new Printer();
machine.Implementor = new Across();
machine.Print();
machine = new Copycat();
machine.Implementor = new Upright();
machine.Print();
Console.ReadLine();
}
}
}