博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
适配器模式(Adapter)
阅读量:7080 次
发布时间:2019-06-28

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

1  概述

遇到这样的问题:需要用到已有的功能,功能的数据和行为都是正确的,但是功能的调用繁杂并要在多个地方调用。在正常的思维下,我们将功能的调用写在一个公共类的一个方法中,这样我们就已经达到了隔离已有复杂功能目的。但这样做有如下缺点:
1>如果这个类有多个公开的方法,则不能对这个类进行统一的管理;
2>如果这个类中的方法相互依赖很强,那么写公共方法也会比较烦;
最后,我们用OO的语言开发,应该以OO的思想来解决这个问题。上述的问题,通过大师们的总结,已经形成一个统一的解决模式:适配器模式;
2  GOF中的定义
2.1 意图:
  将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。——GOF
2.2 对象适配器结构图

2.3 说明:

Adaptee:第三方组件或旧系统中复杂的类;
Target:新系统所希望的接口;
Adapter:将Adaptee转换成Target。

3 示例实现

View Code
///     /// 旧系统中的已有的类    ///     public class Adaptee    {        public void SendMail(string mailtitle,string mailAddress) { }    }    ///     /// 客户代码希望的接口    ///     public interface ISendMail    {        void SendMail();    }    ///     /// 适配器类    ///     public class Adapter:ISendMail    {        protected Adaptee adaptee;        public Adapter(Adaptee ada)         {            this.adaptee = ada;        }        private string tilte;        public string Tilte        {            get { return tilte; }            set { tilte = value; }        }        private string address;        public string Address        {            get { return address; }            set { address = value; }        }        public void SendMail()        {            adaptee.SendMail(Tilte, Address);        }    }

4 总结

总的来说,适配器模式就是在不改变原有代码的前提下,将不兼容或复杂的接口,转换成我们需要的接口。

转载于:https://www.cnblogs.com/dataadapter/archive/2012/09/11/2679501.html

你可能感兴趣的文章
Lync 小技巧-28-同一环境同一客户端不同的结果
查看>>
正在变味的网络红包
查看>>
共享汽车不是一盘好生意,入坑需谨慎!
查看>>
***组网不用愁之2-总部路由器配置
查看>>
使用“一键清理”功能要防止删除WORD文档
查看>>
SVN常用命令
查看>>
内存模型
查看>>
【C++】区分接口继承和实现继承
查看>>
转 jQuery插件Highcharts、flexigrid实践
查看>>
Windows Phone 8 SDK RC 版推出
查看>>
Database2Sharp代码生成工具使用心得
查看>>
稀疏矩阵的十字链表存储
查看>>
【算法导论第13章】红黑树
查看>>
对PostgreSQL中bufmgr.c 中 bufs_to_lap的初步理解
查看>>
Windows 内存分析之路 --How to use Resource Monitor
查看>>
文件上传
查看>>
理解maven的核心概念
查看>>
一个简单的名片管理程序(C#)
查看>>
max tablename length limit in MySQL is 64
查看>>
Ubuntu 12.04 中国科学技术大学源
查看>>