Net设计模式实例之适配器模式(Adapter Pattern)

简介:

一、适配器模式简介(Brief Introduction

适配器模式,将一个类装换成客户期望的另外一个接口。 Adapter 模式使的原本由于接口不兼容而不能工作的那些类可以一起工作。

二、解决的问题(What To Solve

1 、使用第三方组件,而这个组件的接口与目前系统接口不兼容(如方法与系统方法不一致等),可以使用适配器模式解决接口不兼容问题。
2 、使用早前项目一些有用的类,可以用适配器模式解决现有接口与原有对象接口不兼容问题。

三、适配器模式分析(Analysis

1、适配器模式结构

 

 

 

 

 

 

 

 

 

 

 

 

 

2、源代码

1 、客户期待的接口或者抽象类 Target
public  abstract class Target
{
    public abstract void  Request();
}
 
2 、要适配的类 Adaptee ,也就是与期望调用接口不相符的类
public  class Adaptee
{
    public void  SepecificRequest()
     {
        Console .WriteLine(" 执行要适配类的特殊请求方法" );
     }
}
 
3 、适配器类 Adapter 把源接口转换成目标接口,包行变量 adaptee
public  class Adapter :Target
{
    private Adaptee  adaptee;
    public override void  Request()
     {
        if  (adaptee == null )
         {
             adaptee = new Adaptee ();
         }
         adaptee.SepecificRequest();
     }
}
 
4 、客户端代码
static  void Main (string [] args)
{
    Target  target = new Adapter ();
     target.Request();
    Console .Read();
}

3、程序运行结果

 

四、案例分析(Example

场景:系统调用第三方计算类库Calculator ,一开始调用的是带两个整型参数的Add 方法,后来计算类库中的Add 方法两个参数变为Float 类型,此时再使用就的调用方式需要更改客户代码,这是不好的解决办法,较好的解决办法是,使用适配器模式解决接口不一致问题。
Add 方法参数变更前的调用方式:
 
 
 
Add 方法参数类型变更后,增加适配器类 CaculatorAdapter,   解决了接口不一致问题。 如下图:
   

五、总结(Summary

适配器模式,将一个类装换成客户期望的另外一个接口。 Adapter 模式统一了不兼容对象的接口,使的原本由于接口不兼容而不能工作的那些类可以一起工作。









本文转自 灵动生活 51CTO博客,原文链接:http://blog.51cto.com/smartlife/265579,如需转载请自行联系原作者

目录
相关文章
|
20天前
|
设计模式 Java 中间件
23种设计模式,适配器模式的概念优缺点以及JAVA代码举例
【4月更文挑战第6天】适配器模式(Adapter Pattern)是一种结构型设计模式,它的主要目标是让原本由于接口不匹配而不能一起工作的类可以一起工作。适配器模式主要有两种形式:类适配器和对象适配器。类适配器模式通过继承来实现适配,而对象适配器模式则通过组合来实现
30 4
|
1月前
|
设计模式 缓存 安全
【设计模式】单例模式:确保类只有一个实例
【设计模式】单例模式:确保类只有一个实例
23 0
|
3月前
|
设计模式 算法 Java
行为型设计模式-策略模式(Strategy Pattern)
行为型设计模式-策略模式(Strategy Pattern)
|
3月前
|
设计模式 存储 数据库
设计模式之适配器模式
设计模式之适配器模式
|
2天前
|
设计模式 Go
[设计模式 Go实现] 结构型~适配器模式
[设计模式 Go实现] 结构型~适配器模式
|
12天前
|
设计模式 存储 Java
Java设计模式:解释一下单例模式(Singleton Pattern)。
`Singleton Pattern`是Java中的创建型设计模式,确保类只有一个实例并提供全局访问点。它通过私有化构造函数,用静态方法返回唯一的实例。类内静态变量存储此实例,对外仅通过静态方法访问。
16 1
|
1月前
|
设计模式 算法 API
适配器模式:C++设计模式中的瑞士军刀
适配器模式:C++设计模式中的瑞士军刀
48 0
|
1月前
|
设计模式
设计模式之适配器模式
设计模式之适配器模式
|
1月前
|
设计模式 Java 程序员
【设计模式】适配器模式
【设计模式】适配器模式
|
3月前
|
设计模式 程序员
【设计模式】适配器模式
【1月更文挑战第27天】【设计模式】适配器模式