將一個類別介面,轉換成另一個介面以供客戶使用。轉接器讓原本介面不相容的物件可以合作無間。 深入淺出設計模式
有一個池塘,裡面有許多鴨子,突然來了一隻火雞想融入鴨群裡,他透過了轉接器模式,把自己的樣子換成了鴨子騙過了鴨群。
static void Main(string[] args)
{
//真的火雞
ITurkey turkey = new WildTurkey();
//真的鴨子
IDuck duck = new MallardDuck();
//透過轉接器矇騙過關
IDuck fakeDuck = new TurkeyAdapter(turkey);
turkey.Gobble();
turkey.Fly();
DuckMove(duck);
DuckMove(fakeDuck);
}
static void DuckMove(IDuck duck){
duck.Quack();
duck.Fly();
}
鴨子介面
public interface IDuck
{
void Quack();
void Fly();
}
火雞介面
public interface ITurkey
{
void Fly();
void Gobble();
}
鴨子與火雞的實作
public class MallardDuck : IDuck
{
public void Quack(){
Console.WriteLine("MallardDuck quack !");
}
public void Fly(){
Console.WriteLine("MallardDuck fly !");
}
}
public class WildTurkey : ITurkey
{
public void Fly(){
Console.WriteLine("WildTurkey fly !");
}
public void Gobble(){
Console.WriteLine("WildTurkey gobble !");
}
}
火雞轉接器(火雞轉換成鴨子)
public class TurkeyAdapter : IDuck
{
private ITurkey turkey;
public TurkeyAdapter(ITurkey turkey){
this.turkey = turkey;
}
public void Quack(){
turkey.Gobble();
}
public void Fly(){
turkey.Fly();
}
}