码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式-适配器模式

时间:2018-05-19 18:48:10      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:设计模式   适配器模式   

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,新系统此时就就需要加适配类了。
技术分享图片

设计模式-适配器模式

标签:设计模式   适配器模式   

原文地址:http://blog.51cto.com/5591787/2118230

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!