模式说法之——适配器

简介: 在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。那么如何应对这种“迁移的变化”?如何既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口?   将一个类的接口转换成客户希望的另外一个接口。

在软件系统中,由于应用环境的变化,常常需要将一些现存的对象放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。那么如何应对这种迁移的变化?如何既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口?

 

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

 

类适配实现

 

对象适配实现

 

现在实现对象适配器

(一)代码

//被适配者

    public class Adaptee

    {

        public void SpecificRequet()

        {

            Console.WriteLine("原有的正常的接口");

        }

    }

 

    //ITarget接口

    public interface ITarget

    {

        void Request();

    }

 

    //这里利用对象适配的方法。

    //适配器

    public class Adapter:ITarget

    {

        private Adaptee _adapte = new Adaptee();

 

        public void Request()

        {

            _adapte.SpecificRequet();

            Console.WriteLine("现有的经过适配的");

        }

    }

(二)测试

[Test]

        public void TestAdapter()

        {

            ITarget tt = new Adapter();

            tt.Request();

        }

 

 

博客园大道至简

http://www.cnblogs.com/jams742003/

转载请注明:博客园

目录
相关文章
|
12月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
323 3
|
存储 边缘计算 人工智能
边缘计算是啥?
边缘计算是啥?
624 0
|
10月前
|
机器学习/深度学习 人工智能 文字识别
POINTS 1.5:腾讯微信开源的多模态大模型,超越了业界其他的开源视觉语言模型,具备强大的视觉和语言处理能力
POINTS 1.5是腾讯微信推出的多模态大模型,基于LLaVA架构,具备强大的视觉和语言处理能力。它在复杂场景的OCR、推理能力、关键信息提取等方面表现出色,是全球10B以下开源模型中的佼佼者。
445 58
POINTS 1.5:腾讯微信开源的多模态大模型,超越了业界其他的开源视觉语言模型,具备强大的视觉和语言处理能力
|
9月前
|
Web App开发 数据安全/隐私保护 开发者
Firefox Add-ons 插件上架发布全流程指南
本文详细介绍了如何将浏览器插件上架到 Firefox Add-ons,涵盖从注册开发者账号、打包插件、提交审核到最终发布的全流程。与 Chrome Web Store 类似,但 Firefox 的流程更为简化,注册免费且对权限审查相对宽松。文章还对比了两者的关键差异,帮助读者更快上手 Firefox 插件的发布。如果你已经熟悉 Chrome 的上架流程,这篇文章会让你更轻松地在 Firefox 平台上发布插件,触达更多用户。
333 0
|
数据可视化 JavaScript 架构师
D3.js实战:数据可视化高级技巧实例应用
本文介绍了D3.js入门,包括创建HTML文件引入库、绘制简单线图、柱状图和饼图。示例展示了数据绑定、交互性和动画效果,如柱状图的悬停效果和线图的数据平滑过渡。此外,还提及力导向图和地图可视化的实现,以及使用Enter, Update, Exit模式进行动态更新。最后提到了复杂图表和高级技巧,如使用组件库、动画、交互性和性能优化。
475 0
|
12月前
|
机器学习/深度学习 人工智能 Rust
MindSpore QuickStart——LSTM算法实践学习
MindSpore QuickStart——LSTM算法实践学习
181 2
|
API 开发工具 开发者
抖音商品详情API入门:为开发者和商家打造增长工具箱
抖音商品详情API入门:为开发者和商家打造增长工具箱
|
12月前
|
网络协议 Java 程序员
【网络】局域网LAN、广域网WAN、TCP/IP协议、封装和分用
【网络】局域网LAN、广域网WAN、TCP/IP协议、封装和分用
453 2
|
JSON 前端开发 Java
【Java笔记+踩坑】SpringMVC基础
springmvc简介、入门案例、bean加载控制、PostMan工具的使用、普通和JSON和日期格式请求参数传递、响应JSON或jsp或文本、Rest风格
【Java笔记+踩坑】SpringMVC基础
|
12月前
|
存储 NoSQL 安全
GEO类型
【10月更文挑战第9天】
161 0