适配器模式与外观模式
2016-01-22 14:04
211 查看
定义:适配器模式将一个类的接口,转换为客户希望另一个接口。
![](http://images2015.cnblogs.com/blog/875688/201601/875688-20160122132105437-1120574620.gif)
外观模式:外观模式提供了一个统一的接口,用来访问子系统中一群接口。
![](http://images2015.cnblogs.com/blog/875688/201601/875688-20160122135442140-370103748.gif)
要点:
当需要使用一个类而其接口不符合你的需求的时候,使用适配器。
当需要简化并统一一个很大的接口或一群负责的接口时,使用外观。
适配器可以改变接口以符合客户的期望。
外观将客户从一个复杂的子程序解耦。
你可以为一个子系统实现一个以上的外观。
适配器将一个对象包装起来以改变其接口。装饰者将一个对象包装起来已增加新的行为和责任。
例子:
![](http://images2015.cnblogs.com/blog/875688/201601/875688-20160122132105437-1120574620.gif)
外观模式:外观模式提供了一个统一的接口,用来访问子系统中一群接口。
![](http://images2015.cnblogs.com/blog/875688/201601/875688-20160122135442140-370103748.gif)
要点:
当需要使用一个类而其接口不符合你的需求的时候,使用适配器。
当需要简化并统一一个很大的接口或一群负责的接口时,使用外观。
适配器可以改变接口以符合客户的期望。
外观将客户从一个复杂的子程序解耦。
你可以为一个子系统实现一个以上的外观。
适配器将一个对象包装起来以改变其接口。装饰者将一个对象包装起来已增加新的行为和责任。
例子:
/// <summary> /// 鸭子类的接口 /// /// 是鸭子都要实现这个接口 /// 能叫能跳 /// </summary> interface IDuck { void Quack(); void Fly(); }
/// <summary> /// 鸭子的实例类 绿头鸭 /// /// /// </summary> class MallardDuck:IDuck { public void Quack() { Console.WriteLine("鸭子 嘎嘎叫"); } public void Fly() { Console.WriteLine("鸭子 慢慢的跳舞"); } }
/// <summary> /// 鸡的接口 /// /// 是鸡都要实现这个接口 /// 能叫能跳 /// </summary> interface ITurkey { void Gobble(); void Fly(); }
/// <summary> /// 鸡的实例 /// /// 鸡的实例 火鸡 /// </summary> class WildTurkey:ITurkey { public void Gobble() { Console.WriteLine("火鸡 唧唧叫"); } public void Fly() { Console.WriteLine("火鸡 摇摆的跳舞"); } }
相关文章推荐
- 【tree】--分销商级联删除--170 drp
- Android 时间转换
- C函数之memcpy()函数用法
- SVG pointer-events属性
- DDoS的攻击方式及防御手段
- java基础篇--01<基础>
- input 去除叉叉和小眼睛
- git shell 命令
- Mysql支持的数据类型
- C++:抽象类(圆与正方形)
- 漂移板技术路线图
- HTML5新特性
- float学习笔记
- Timeout watchdog using a standby thread
- javascript 传递参数中带加号自动变成了空格的解决方法
- ubuntu14.04下 tomcat的安装
- Mysql分区技术 --创建分区表
- 高级编程之进程(一)
- 一个码农的2015回顾和2016展望
- CSS3 transform对普通元素的N多渲染影响