博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式—适配器模式
阅读量:5252 次
发布时间:2019-06-14

本文共 1492 字,大约阅读时间需要 4 分钟。

1 适配器模式

  将一个类的接口转成客户希望的另一个接口。adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

       目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。

  需要适配的类(Adaptee):需要适配的类或适配者类。

  适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。  

2 适用场景

  已经存在的类的接口不符合我们的需求;

       创建一个可以复用的类,使得该类可以与其他不相关的类或不可见的类协同工作;

3 代码实现           

///     /// 定义客户端期待的接口    ///     public class Target    {        ///         /// 使用virtual修饰以便子类可以重写        ///         public virtual void Request()        {            Console.WriteLine("This is a common request");        }    }    ///     /// 定义需要适配的类    ///     public class Adaptee    {        public void SpecificRequest()        {            Console.WriteLine("This is a special request.");        }    }    ///     /// 定义适配器    ///     public class Adapter:Target    {        // 建立一个私有的Adeptee对象        private Adaptee adaptee = new Adaptee();        ///         /// 通过重写,表面上调用Request()方法,变成了实际调用SpecificRequest()        ///         public override void Request()        {            adaptee.SpecificRequest();        }    } class Program    {        static void Main(string[] args)        {            // 对客户端来说,调用的就是Target的Request()            Target target = new Adapter();            target.Request();            Console.Read();        }    }

4 模式总结

  4.1 优点

    4.1.1 通过适配器,客户端可以调用统一接口,因而对客户端来说是透明的。这样做更简单,更直接,

    4.1.2 复用了现有的类,解决了现有类和复用环境不一致的问题;

    4.1.3 将目标类和适配者解耦,通过引入一个适配器类重用,无需修改原有代码。

    4.1.4 一个对象适配器可以把多个不同的适配者类适配到同一目标,也就是说,同一适配器可以把适配者和它的子类都适配到目标接口。

 

    

转载于:https://www.cnblogs.com/liufei1983/p/7106077.html

你可能感兴趣的文章
类和结构
查看>>
CSS3选择器(二)之属性选择器
查看>>
VopSdk一个高逼格微信公众号开发SDK(源码下载)
查看>>
关于cocos2d-x中CCScrollView添加CCMenu一系列问题的解决方案
查看>>
mysql中进行删除操作时用到not in 导致删除不成功
查看>>
Java虚拟机详解03----常用JVM配置参数
查看>>
视频采集,存成avi
查看>>
SpringCloud重试机制配置
查看>>
[转载]项目经理能力训练-如何讲解PPT?
查看>>
phpdesigner 7 注册码(key)(转)
查看>>
【BZOJ3674】可持久化并查集加强版
查看>>
exBSGS板子
查看>>
wp7 使用缓存 改善性能
查看>>
CS294-112 深度强化学习 秋季学期(伯克利)NO.1 Introduction NO.2 Supervised learning and imitation...
查看>>
[CV] OpenCV图像处理教程- 23:像素重映射pixel remap
查看>>
竞争性排斥原理(高斯假说)
查看>>
Intellig IDEA 搭建spring boot 热部署
查看>>
MySQL 对于大表(千万级),要怎么优化呢?
查看>>
sqlmap基础入门超详细教程
查看>>
js产生随机数的几个方法
查看>>