当前位置: 首页 > news >正文

设计模式Adapter模式的五分钟

五分钟一个设计模式。来形容叙述的设计模式的最简单方法。看到许多其他设计模式,请点击五分钟一个设计模式系列
http://blog.csdn.net/daguanjia11/article/category/3259443

认识适配器模式

适配器模式的定义是:将一个类的接口转换成client希望的另外一个接口。

适配器模式使得原本因为接口不兼容而不能一起工作的那些类能够一起工作。

适配器模式的主要功能是转换接口,目的是复用已有功能。而不是实现新接口,适用于功能实现了但接口不兼容的场合。

适配器组合了原有对象,而且提供与一个client兼容的接口,实际的工作由原有接口完毕。

演示样例代码

以下的演示样例代码中主要包括以下部分:

  1. Target:client须要的接口,与特定领域相关
  2. Adaptee:被适配对象
  3. Adapter:适配器

来上代码:

/// <summary>
/// client须要的接口,与特定领域相关
/// </summary>
public interface Target
{/// <summary>/// client请求处理的方法/// </summary>void Request();
}
/// <summary>
/// 被适配对象
/// </summary>
public class Adaptee
{/// <summary>/// 原有的已经实现了的方法,但接口发生了变化/// </summary>public void OldRequest(){Console.WriteLine("原来的方法运行了");}
}
/// <summary>
/// 适配器
/// </summary>
public class Adapter : Target
{/// <summary>/// 组合被适配的对象/// </summary>private Adaptee adaptee;public Adapter(Adaptee adaptee){this.adaptee = adaptee;}public void Request(){this.adaptee.OldRequest();}
}

以下看client怎样使用

class Program
{static void Main(string[] args){//创建被适配对象Adaptee adaptee = new Adaptee();//创建client须要调用的接口对象Target target = new Adapter(adaptee);//请求处理target.Request();}
}

程序运行结果:
原来的方法运行了


http://www.taodudu.cc/news/show-854173.html

相关文章:

  • Python爬取小说
  • 基于Vue3+ElementPlus项目,复制文字到剪贴板功能实践指南,揭秘使用js-tool-big-box工具库的核心优势
  • 计算机视觉——OpenCV实现Lucas-Kanade 光流追踪
  • 面试 Java 并发编程八股文十问十答第十二期
  • 电商核心技术揭秘56:客户关系管理与忠诚度提升
  • C#核心之面向对象相关知识点
  • oracle的SCN和Checkpoint_Change#的关系
  • A problem while linking c++ to python
  • 几大基础算法
  • POPTEST学员就业面试题目!!!!!
  • 【自定义控件】自定义属性
  • 我的Git使用-资料查询,名博笔记
  • firefox-Developer开发者站点——关于Object.create()新方法的介绍
  • SharePoint 使用脚本为表单绑定事件
  • 解决Cannot change version of project facet Dynamic Web M
  • Github博客地址
  • c language compile process.
  • 阅读总结:如何在生产中成功运用Docker
  • [搜索]Trie树的实现
  • 老李分享:接口测试之jmeter
  • maven远程发布jar
  • GPRS模块AT呼叫控制命令
  • hadoop datanode启动失败
  • CentOS6.5下用yum安装 git .
  • 读博文学Android
  • javaWEB学习之filter
  • mysql字符集调整总结
  • C#ListBox对Item进行重绘,包括颜色
  • Android应用Activity、Dialog、PopWindow、Toast窗体加入机制及源代码分析
  • common_test使用注意事项
  • [转]如何写出不可维护的服务端程序
  • ubuntu14.04中 gedit 凝视能显示中文,而source insight中显示为乱码的解决的方法
  • 第四章 连接
  • eclipse插件安装,万能方法
  • freebsd从安装到想要的状态配置
  • 我的Python成长之路---第一天---Python基础(5)---2015年12月26日(雾霾)