設計模式-適配器模式
阿新 • • 發佈:2018-05-19
設計模式 適配器模式
新系統調用老系統的add,新系統此時就就需要加適配類了。
abstract class Person
{
public string name;
public Person(string _name)
{
name = _name;
}
public abstract void Say();
}
class EnglishPerson : Person
{
public EnglishPerson(string _name) : base(_name)
{
}
public override void Say()
{
Console.WriteLine("i‘m{0}",name);
}
}
//被適配的對象
class ChinesePerson : Person
{
public ChinesePerson(string _name) : base(_name)
{
}
public override void Say()
{
Console.WriteLine("我是{0}", name);
}
}
class JapanPerson : Person
{
public JapanPerson(string _name) : base(_name)
{
}
public override void Say()
{
Console.WriteLine("私は{0}と申します", name);
}
}
class TranslatorAdapter : Person
{
private ChinesePerson cp;
public TranslatorAdapter(string _name) : base(_name)
{
cp = new ChinesePerson(name);
}
public override void Say()
{
cp.Say();
}
}
//前端
static void Main(string[] args)
{
Person p = new EnglishPerson("JOM");
p.Say();
Person p1 = new JapanPerson("アレクサンダー大");
p1.Say();
Console.ReadKey();
//P1,P2來中國旅遊,請了個中國翻譯
Console.WriteLine("P1,P2來中國旅遊,請了個中國翻譯");
p = new TranslatorAdapter("JOM");
p.Say();
p1 = new TranslatorAdapter("アレクサンダー大");
p1.Say();
Console.ReadLine();
}
總結:轉換接口使不兼容的類可以一起工作,一般在軟件開發後期階段使用很多。
與代理模式差別在於
1、代理模式中被代理的類是不允許被客戶端訪問的,
代理類知識轉達被代理類的行為意圖,
設計時代理類和被代理是同一個接口。
假如被代理類可以直接被訪問,那麽被代理類和代理類最終都是執行的同一個方法。
2、適配器模式是為了實現:客戶的某個行為意圖希望轉變成另外一種行為意圖。
即轉變為被適配角色的行為。
比如英文:i love you,中文:我愛你,
在中國老外說:i love you‘’,就需要適配器轉成我愛你,而‘’我愛你‘’就是被適配的對象
使用場景:
老系統:add(param1,param2,param3)
新系統:add(param1,param2,param3,param4)
設計模式-適配器模式