设计模式---适配器模式
来源:互联网 发布:三星专用下载软件 编辑:程序博客网 时间:2024/06/03 17:25
结构型:用于描述如何实现类和对象的组合,从而达到实现一定的功能的目的。
我在上一篇全局观里面已经将这些分好类了,大家可以看看:http://blog.csdn.net/tgbyn/article/details/66479852
内容:
第一个:适配器模式 【使用频率:★★★★☆】
1、定义:
适配器模式:将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作。
理解:自己去外国出差,戴着咱们自己的电脑,结果没电了,而咱们用的电压跟外国用的电压不一样,无法充电。而电源适配器可以转换成我们笔记本想用的电压,从而给我们的电脑充电。适配器就好比我们现在的电源适配器。
2、分类:对象适配器和类适配器
类适配器模式和对象适配器模式最大的区别:
在于适配器和适配者之间的关系不同,对象适配器没送货ihzong适配器和适配者之间是关联关系;而类适配器模式中适配器和适配者是继承关系。
类适配器:继承自己实现的类,一般是多重继承,而Java和C#语言不支持多重继承,因此受到限制。
3、对象适配器结构图:
组成:
Target(目标抽象类):这是客户期待的接口,目标可以是具体的或抽象的类,也可以是接口。
Adapter(适配器类):适配器模式的核心,作为一个转换器,对Adaptee和Adaptee进行适配。
Adaptee(适配者类):被适配的角色,包含了客户希望使用的业务方法。
3、代码
class Program { static void Main(string[] args) { Player b = new Forwards("巴蒂尔"); b.Attack(); Player m = new Guards("麦克格雷迪"); m.Attack(); //Player ym = new Center("姚明"); Player ym = new Translator("姚明"); ym.Attack(); ym.Defense(); Console.Read(); } } //篮球运动员 abstract class Player { protected string name; public Player(string name) { this.name = name; } public abstract void Attack(); public abstract void Defense(); } //外籍中锋 class ForeignCenter { private string name; public string Name { get { return name; } set { name = value; } } public void 进攻() { Console.WriteLine("外籍中锋 {0} 进攻", name); } public void 防守() { Console.WriteLine("外籍中锋 {0} 防守", name); } } //翻译者 class Translator : Player { private ForeignCenter wjzf = new ForeignCenter(); public Translator(string name) : base(name) { wjzf.Name = name; } public override void Attack() { wjzf.进攻(); } public override void Defense() { wjzf.防守(); } }4、总结:
适配器模式将现有接口转化为客户类所期望的接口,实现了,对现有类的复用。
装饰着模式,适配器模式,外观模式区别:
装饰着模式:并不改变接口,而是将一个一个接口进行装饰,也就是添加新的功能。
适配器模式:经常用在需要第三方协同的场合,设法将你与第三方隔离开。一个接口通过一个适配间接转换为另一个接口
外观模式:提供一个整洁一致的接口给客户端。
- 设计模式:适配器模式
- 设计模式------适配器模式
- 设计模式:适配器模式
- 设计模式---适配器模式
- 设计模式 适配器模式
- 设计模式 - 适配器模式
- 设计模式--适配器模式
- 设计模式-适配器模式
- 设计模式------适配器模式
- 设计模式---适配器模式
- 设计模式- 适配器模式
- 设计模式 - 适配器模式
- 设计模式:适配器模式
- 适配器模式--设计模式
- 设计模式 - 适配器模式
- 设计模式-适配器模式
- 设计模式---适配器模式
- 设计模式-适配器模式
- java基础知识7this关键字
- 通过河内之塔问题深入理解递归思想
- Gym 101246E Kidnapping 递推or dfs 优化
- 线程池为什么能维持线程不释放,随时运行各种任务?
- Adreno SDK 详细介绍(一)
- 设计模式---适配器模式
- java
- java基础知识8继承
- bzoj4820
- Java最最基础的知识(适合初学者看)
- spring boot +jquery mobile构建web APP
- STL中map的简单使用
- 红帽vsftpd 文件共享服务
- hdu 5544 Ba Gua Zhen(线性基+dfs)