类适配器:

客户程序定义好的接口
1using System;
2
3namespace Gof.Test.adapter
4{
5    public interface ICart
6    {
7        void Driver();
8    }
9}
已经存在的类
 1using System;
 2
 3namespace Gof.Test.adapter
 4{
 5    public class AlreadyWrite
 6    {
 7        public AlreadyWrite()
 8        {
 9        }
10
11        public void DriverMyCart()
12        {
13            Console.WriteLine("AlreadyWrite is Drivering!");
14        }
15    }
16}
类适配器
 1using System;
 2
 3namespace Gof.Test.adapter
 4{
 5    public class CartAdapetee:AlreadyWrite,ICart//先写类,后写接口。
 6    {
 7
 8        public CartAdapetee()
 9        {}
10
11        ICart 成员#region ICart 成员
12
13        public void Driver()
14        {
15            base.DriverMyCart();
16        }
17
18        #endregion
19    }
20}
客户程序调用
 1using System;
 2
 3namespace Gof.Test.adapter
 4{
 5    public class Client
 6    {
 7        public Client()
 8        {
 9        }
10        public void DriverCart()
11        {
12            ICart cart = new CartAdapetee();
13            cart.Driver();
14            Console.ReadLine();
15        }
16    }
17}

对象适配器:

用户程序已经使用的类
 1using System;
 2
 3namespace Gof.Test.adapter
 4{
 5    public class CartUsed
 6    {
 7        public CartUsed()
 8        {
 9        }
10        public virtual void DriverMyCart()
11        {
12            Console.WriteLine("I want to Drivering My Cart!");
13        }
14    }
15}

客户程序通过把要适配的类标记为Virtula,使得我们有机会重载它。但这样做有可能存在风险。

客户程序
 1using System;
 2
 3namespace Gof.Test.adapter
 4{
 5    public class Client
 6    {
 7        public Client()
 8        { }
 9        public void DriverCart()
10        {
11            CartAdapeteeObj cart = new CartAdapeteeObj();
12            cart.DriverMyCart();
13            Console.ReadLine();
14        }
15    }
16}
对象适配器
 1using System;
 2
 3namespace Gof.Test.adapter
 4{
 5    public class CartAdapeteeObj:CartUsed
 6    {
 7        private AlreadyWrite already;
 8        public CartAdapeteeObj()
 9        {
10            already = new AlreadyWrite();
11        }
12        public override void DriverMyCart()
13        {
14            already.DriverMyCart();
15        }                          
16    }
17}

The Adapter Pattern converts the interface of a class into another interface the clients expect. Adapter lets classes work together that couldn't otherwise because of incompatible interfaces.

Adapter 如果客户需要使用某个类的服务,而这项服务是这个类用一个不同的接口提供的,那么,可以使用适配器模式为客户提供一个期望的接口...相关推荐

  1. [收集] Web服务相关的, 介绍框架(framework)类的论文

    收集了部分Web服务相关的, 介绍框架(framework)类的论文 <RECORD 1> WSCF: A framework for web service-based applicat ...

  2. 业务中台管理系统、业务中台架构、接口类服务、模型类服务、界面类服务、组件类服务、服务架构、中后台、服务审核、AI服务、位置服务、行业场景服务、企业中台、接口配置、模型配置、数据处理、结构化数据、数据源

    业务中台管理系统.业务中台架构.接口类服务.模型类服务.界面类服务.组件类服务.服务架构.中后台.服务审核.AI服务.位置服务.行业场景服务.企业中台.接口配置.模型配置.数据处理.结构化数据.数据源 ...

  3. BS1022-基于React native+springboot开发服务端后台实现体育资讯类APP

    基于React native的体育资讯类APP的开发目的是方便互联网用户线上接收日常生活中的体育赛事新闻,体育活动新闻,体育赛事直播等,方便人们在体育行业的社交,极大的缩减人们在体育运动方面的距离,也 ...

  4. android位置服务与GPS实时定位工具类

    一.概述 据专家说:人类活动80%的信息与空间位置信息有关,这还真不是专家吹牛.举个例子:你跟女神约饭,你得知道女神在哪里吧?你们选择约在哪里的餐厅最合适?你们过去分别有多远?你们怎么过去?--总结起 ...

  5. 封装利用libwebsockets写出的客户端、服务端程序为客户端服务端类

    封装利用libwebsockets写出的客户端.服务端程序为客户端服务端类 文章目录 封装利用libwebsockets写出的客户端.服务端程序为客户端服务端类 1.封装 2.封装后写wss客户端.服 ...

  6. 数控类设备数据读取数据服务接口(西门子数据采集、发那科数据采集、广数数据采集等等)数控采集适应性解决方案

    行业现状: 最近听到很多做MES.ERP这一行的叫苦, 客户对项目的要求越来越严格,做到数字化工厂都伴随着ERP.MES的项目要求必须一起做下去 然而很对MES.ERP对设备协议不懂,买了协议自己还要 ...

  7. 微服务模式笔记:服务分解策略

    Microservice Patterns第二章的读书笔记 原章节链接: https://learning.oreilly.com/library/view/microservices-pattern ...

  8. 从Netflix的Hystrix框架理解服务熔断和服务降级

    本文讲的是从Netflix的Hystrix框架理解服务熔断和服务降级,伴随着微服务架构被宣传得如火如荼,一些概念也被推到了我们面前,其实大多数概念以前就有,但很少被提的这么频繁.想起有人总结的一句话, ...

  9. Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)

    2019独角兽企业重金招聘Python工程师标准>>> 动手试一试 在开始使用Spring Cloud Hystrix实现断路器之前,我们先拿之前实现的一些内容作为基础,其中包括: ...

最新文章

  1. excel Match函数不同匹配类型用法解析
  2. python 样本均值t检验_假设检验与单样本T检验(上)
  3. java 去除干扰_【Selenium-WebDriver实战篇】Java丨验证码图片去除干扰像素,方便验证码的识别(转)...
  4. 数据库模型设计PowerDesigner
  5. 两个简单多边形面积相等,那么其中一个能分割成有限多块多边形,经过平移和旋转,拼合成第二个多边形...
  6. c语言元素插入数组并排序,一数组按顺序序存放,插入一个数,按原来排序规律放在相应位置...
  7. 设计实现优雅修改redux数据流的一个库 - redux-chef
  8. LinuxControlGroup(Cgroup)简介
  9. 【白皮书分享】智能文字识别(OCR)能力评测与应用白皮书.pdf(附下载链接)...
  10. linux 下挂载光驱
  11. Visual Studio解决方案的目录结构设置和管理
  12. Lc101对称二叉树
  13. 链路状态路由选择LS
  14. nuget 下载nupkg 以及依赖包
  15. 什么是空号检测api接口?哪些行业会用到?
  16. 加载脚本依赖发生错误--暴力猴
  17. java省市区_JAVA省市区地址解析 原创
  18. INS/GNSS组合导航(五)惯性器件的主要误差
  19. Memcached damo
  20. 频率超出范围黑屏Linux,Win10专业版分辨率超出工作频率范围黑屏怎么办

热门文章

  1. 威刚 S102 量产成功 制作带cd-rom启动型U盘 16g USB3.0
  2. 苹果通过电商渠道降价20天后,iPhone在中国销量猛增八成
  3. Google将推中文信息流产品,今日头条们请注意~
  4. 活动合作 | AI NEXTCon 硅谷AI技术峰会(北京分会)大咖来袭
  5. 百度悄然发布Deep Vioce 3
  6. 逻辑代码题:五个学生参加计算机比赛
  7. 系统封装教程集合电子书
  8. 智能传感器产业三年行动指南
  9. java第三方包学习之jsoup
  10. diffrences between ARP table and MAC address table