1. 程式人生 > >設計模式-適配器模式

設計模式-適配器模式

設計模式 適配器模式

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,新系統此時就就需要加適配類了。
技術分享圖片

設計模式-適配器模式