大话设计模式之适配器模式
来源:互联网 发布:宽带网络那家好 编辑:程序博客网 时间:2024/04/28 13:26
适配器模式
将一个类的接口转换成用户希望的另一个接口。Adapter模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作。
当我们发现系统的数据和行为都正确,但接口不符合时,我们应该考虑用适配器,目的使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。
//这是客户所期待的接口,目标可以是具体或抽象的类,也可以是接口class Target{ public virtual void Request() { Console.WriteLine("普通工作请求"); }}; //需要适配的类class Adaptee{ public void SpecialRequest() { Console.WriteLine("特殊工作请求"); }}; //Adapter,通过内部包装一个Adapter对象,把源接口转换成目标接口class Adapter:Target{ private Adaptee ad = new Adaptee(); public override void Request() { ad.SpecialRequest(); }}; //客户端void main(){ Target t = new Adapter(); t.Request(); //这样一来,其实我们调用的是SpecialRequest}
什么时候使用适配器模式呢?
当两个类所做的事情相同或者相似的时候,但是他们具备不同的接口,且双方都不太容易修改的时候,就要使用适配器模式
这样一来,客户端就可以同一调用接口。
以下为一个例子,讲一个异国篮球运动员听不懂教练的指挥,从而需要一个翻译(适配器)的例子:
//运动员抽象类abstractclass Player{ protected string name; public Player(string name) { this.name = name; } public abstract void Attack(); public abstract void Defense();}; //本国运动员Aclass PlayerA :Player{ public PlayerA(string name) :base(name) {} public override void Attack() { Console.WriteLine("攻击,{0}",name); } public override void Defense() { Console.WriteLine("防守,{0}",name); }}; //异国运动员Bclass ForeignPlayer{ private string name; public string Name { get{ return name; } set{ name = value; } } public void AK() { Console.WriteLine("Attack{0}",name; } public void DF() { Console.WriteLine("Defend{0}",name); }}; //异国运动员的翻译class Translator : Player{ private ForeignPlayer FP = new ForeignPlayer(); public Translator(string name) :base(name) { FP.Name = name; } public override void Attack() { FP.AK(); } public override void Denfense() { FP.DF(); }}; void main(){ //当我们要指挥异国运动员时候,我们指挥翻译员 Player fp = new Translator("ABC"); fp.Attack(); fp.Defense();}
0 0
- 大话设计之适配器模式
- 大话设计模式之适配器模式
- 大话设计模式之适配器模式
- <<大话设计模式>>之适配器模式
- java设计模式大话之适配器模式
- 大话设计模式笔记之适配器模式
- 大话设计模式之适配器模式
- #大话设计模式之适配器模式#
- 大话设计模式读书笔记之适配器模式
- 大话设计模式-适配器
- 大话设计模式-适配器模式
- 大话设计模式 适配器模式
- 大话设计模式-适配器模式
- <十三>读<<大话设计模式>>之适配器模式
- 《大话设计模式》java实现之适配器模式
- 大话设计模式_适配器模式
- 【大话设计模式】——适配器模式
- linkin大话设计模式--适配器模式
- HBase
- 软考详解---三范式
- 输了你我输了全部
- 二十四、C++程序设计必知:多文件结构和编译预处理命令
- S2E的安装 ubuntu12.04 64bit
- 大话设计模式之适配器模式
- 黑马程序员——C语言(scanf函数、基本运算、流程控制)总结
- ARM汇编嵌套中断处理
- JSP:请求数据和请求本身的一些信息
- 常用数据库的驱动类/URL/默认端口
- 天声人語 20150426
- ZOJ 3870 Team Formation(异或运算)
- Pig
- HDU1358 Period【KMP】