设计模式之适配器模式

注解:适配器模式的设计原则是“只和朋友交谈”

总结:将一个类的接口转换成客户期望的另一个接口。
适配器让原本不兼容的类可以合作无间。
当要使用一个现的类而其接口冻符合你的需要时,就使用适配器。

 

你可能会经常遇到下面这种情况,厂家提供的接口和你写的接口合不上,怎么办??

这时候你不想改变自己的接口来适应厂家的接口,同时你又不能改变厂家的接口,那么这个时候你就应该考虑使用适配器模式了。

 

厂家调用他们的接口,而实际上我们给的却是看似像厂家的接口的接口。

 

通过上图我想大家应该很清楚了吧,这个模式很简单的。但是却是很有用的。

 

鸭子接口(厂家提供的接口)
   
   
namespace 适配器模式
{
/// <summary>
/// 鸭子接口(厂家提供的接口)
/// </summary>
public interface IDuck
{
/// <summary>
/// 嘎嘎叫
/// </summary>
void Rattle();

/// <summary>
/// 飞行
/// </summary>
void Fly();

}
}

 

 

火鸡(被适配的接口)
   
   
1 namespace 适配器模式
2 {
3 /// <summary>
4 /// 火鸡(被适配的接口)
5 /// </summary>
6   public interface ITurkey
7 {
8 /// <summary>
9 /// 咯咯叫
10 /// </summary>
11   void Giggling();
12
13 /// <summary>
14 /// 飞行
15 /// </summary>
16   void Fly();
17 }
18 }

 

 

绿毛鸭子(客户的实现)
   
   
1 namespace 适配器模式
2 {
3 /// <summary>
4 /// 绿毛鸭子(客户的实现)
5 /// </summary>
6   public class GreenDuck : IDuck
7 {
8 public void Rattle()
9 {
10 Console.WriteLine( " 发出声音! " );
11 }
12
13 public void Fly()
14 {
15 Console.WriteLine( " 在飞行! " );
16 }
17 }
18 }
19  

 

红色火鸡(我们的实现)
   
   
1 namespace 适配器模式
2 {
3 /// <summary>
4 /// 红色火鸡(我们的实现)
5 /// </summary>
6   public class RedTurkey : ITurkey
7 {
8
9 public void Giggling()
10 {
11 Console.WriteLine( " 发出声音! " );
12 }
13
14 public void Fly()
15 {
16 Console.WriteLine( " 在飞行! " );
17 }
18 }
19 }
20  

 

 

 

适配器(把火鸡伪装成鸭子)
   
   
1 namespace 适配器模式
2 {
3 /// <summary>
4 /// 适配器(把火鸡伪装成鸭子)
5 /// </summary>
6   public class TurkeyAdapter : IDuck
7 {
8 public TurkeyAdapter(ITurkey turkey)
9 {
10 this .Turkey = turkey;
11 }
12
13 ITurkey Turkey { get ; set ; }
14
15 public void Rattle()
16 {
17 Turkey.Giggling();
18 }
19
20 public void Fly()
21 {
22 Turkey.Fly();
23 }
24 }
25 }
26  

 

 

 

uml图如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值