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)
新系統調用老系統的add,新系統此時就就需要加適配類了。
創新互聯www.cdcxhl.cn,專業提供香港、美國云服務器,動態BGP最優骨干路由自動選擇,持續穩定高效的網絡助力業務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統配攻擊溯源,準確進行流量調度,確保服務器高可用性。佳節活動現已開啟,新人活動云服務器買多久送多久。
網站名稱:設計模式-適配器模式-創新互聯
文章路徑:http://m.newbst.com/article26/dpeccg.html
成都網站建設公司_創新互聯,為您提供App設計、企業網站制作、微信公眾號、標簽優化、靜態網站、用戶體驗
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯