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 == nu ll )
         {
             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,如需转载请自行联系原作者

目录
相关文章
|
6月前
|
设计模式 Java API
重构旧代码的秘诀:用设计模式 - 适配器模式(Adapter)给Java项目带来新生
【4月更文挑战第7天】适配器模式是解决接口不兼容问题的结构型设计模式,通过引入适配器类实现目标接口并持有不兼容类引用,实现旧代码与新接口的协作。适用于处理兼容性问题、整合遗留代码和集成第三方库。应用时,识别不兼容接口,创建适配器类转换方法调用,然后替换原有引用。注意保持适配器简单、使用组合和考虑扩展性。过度使用可能导致系统复杂和维护成本增加,应谨慎使用。
100 4
|
6月前
|
设计模式 算法 Java
行为型设计模式-策略模式(Strategy Pattern)
行为型设计模式-策略模式(Strategy Pattern)
|
2月前
|
设计模式
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
这篇文章详细解释了工厂模式,包括简单工厂、工厂方法和抽象工厂三种类型。每种模式都通过代码示例展示了其应用场景和实现方法,并比较了它们之间的差异。简单工厂模式通过一个工厂类来创建各种产品;工厂方法模式通过定义一个创建对象的接口,由子类决定实例化哪个类;抽象工厂模式提供一个创建相关或依赖对象家族的接口,而不需要明确指定具体类。
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
|
6月前
|
设计模式 Java
【设计模式】JAVA Design Patterns——Adapter(适配器模式)
【设计模式】JAVA Design Patterns——Adapter(适配器模式)
|
2月前
|
设计模式 Java
设计模式--适配器模式 Adapter Pattern
这篇文章介绍了适配器模式,包括其基本介绍、工作原理以及类适配器模式、对象适配器模式和接口适配器模式三种实现方式。
|
6月前
|
设计模式 算法
设计模式 - 行为型模式_ 访问者模式Visitor Pattern
设计模式 - 行为型模式_ 访问者模式Visitor Pattern
73 1
设计模式 - 行为型模式_ 访问者模式Visitor Pattern
|
6月前
|
设计模式 Java 应用服务中间件
设计模式 -结构型模式_门面模式(外观模式) Facade Pattern 在开源软件中的应用
设计模式 -结构型模式_门面模式(外观模式) Facade Pattern 在开源软件中的应用
59 1
|
5月前
|
设计模式
设计模式-05建造者模式(Builder Pattern)
设计模式-05建造者模式(Builder Pattern)
|
6月前
|
设计模式 缓存 安全
设计模式 - 创建型模式_ 单例模式 Singleton Pattern
设计模式 - 创建型模式_ 单例模式 Singleton Pattern
77 0
|
6月前
|
设计模式 安全 Java
【设计模式】JAVA Design Patterns——Curiously Recurring Template Pattern(奇异递归模板模式)
该文介绍了一种C++的编程技巧——奇异递归模板模式(CRTP),旨在让派生组件能继承基本组件的特定功能。通过示例展示了如何创建一个`Fighter`接口和`MmaFighter`类,其中`MmaFighter`及其子类如`MmaBantamweightFighter`和`MmaHeavyweightFighter`强制类型安全,确保相同重量级的拳手之间才能进行比赛。这种设计避免了不同重量级拳手间的错误匹配,编译时会报错。CRTP适用于处理类型冲突、参数化类方法和限制方法只对相同类型实例生效的情况。
【设计模式】JAVA Design Patterns——Curiously Recurring Template Pattern(奇异递归模板模式)