实际上适配器模式是用于解耦。设想一下我们的程序模块A在与模块B打交道时,需要在许多地方多次使用B中某个类的方法,而负责开发B的程序猿Tom还未完全实现该类,会随时更改该类中的方法,那么当Tom在修改时,负责A的攻城狮Jerry不得不进行苦逼的修改。聪明的项目经理Dabao想出了好方法——适配器模式,于是在Tom和Jerry之间进行了如下设计:

 /// <summary>
/// B中目前只定义了英雄KASS
/// </summary>
public class KASS
{
public void R()
{
//KASS的技能
}
} /// <summary>
/// 定义英雄的接口
/// </summary>
public class Hero
{
/// <summary>
/// 使用virtual修饰以便子类可以重写
/// </summary>
public virtual void attack()
{
//英雄进攻的方法和招数
}
} /// <summary>
/// 定义适配器
/// B暂时提供英雄KASS
/// </summary>
public class HeroAdapter:Hero
{
// 建立一个私有的英雄KASS对象
private KASS kass = new KASS(); /// <summary>
/// 通过重写,表面上调用attack()方法,实际调用R()
/// </summary>
public override void attack()
{
kass.R();
}
} /// <summary>
/// Tom负责的模块A
/// </summary>
public class A
{
public static void Main(string[] args)
{
// A需要借助B中的英雄完成进攻的任务,但B还未定下是那个英雄,所以不能直接创建特定英雄的对象
// 但我们知道肯定要一个英雄,并且需要这个英雄去进攻
Hero hero = new HeroAdapter();
hero.attack(); //...
}
}

详细说明:http://wp.662p.com/thread-8244-1-1.html

Win8.1应用开发之适配器模式(C#实现)的更多相关文章

  1. Win8.1应用开发之异步编程

    在win8应用商店开发时,我们会遇到很多异步方法.它们存在的目的就是为了确保你的应用在运行须要大量时间的任务时仍能保持良好的响应,也就是说调用异步API是为了响应用户的操作.设想一下我们点击一个But ...

  2. win8.1安装开发工具vs2013.3+mssql2012全程

    几个常用的命令 重起计算机命令:shoutdown.exe -r -t 0 立刻重起 在远程桌面中没有关机重起的选项,这个命令是必须的 远程桌面连接:mstsc 硬件环境:I7 4770 64RAM ...

  3. win8.1安装开发工具 vs2015 Visual Studio 2015 Preview Downloads

    1.首先全新安装win8.1 略 破解激活.... 2.安装Visual Studio 2015 Visual Studio 2015 是免费的,不存在破解版本, 如果安装过程中存在问题,建议先把本文 ...

  4. Win8.1应用开发之文件操作

    在操作文件之前,先相应用的应用功能声明进行设定.用户通过C#(非UI)对win8.1上的文件进行訪问,仅仅能局限于图片,音乐,视频和文档四个目录. 而通过文件选取器则能訪问到整个系统的文件. (一)应 ...

  5. Win8.1应用开发之动态磁贴

    using demo02.Common; using System; using System.Collections.Generic; using System.IO; using System.L ...

  6. win8平板APP开发的教程文章

    http://blog.csdn.net/tcjiaan/article/details/7866595 基于C#的Metro工程如何引用C++的动态库——FIleNotFound解决办法: http ...

  7. Visual EmbedLinux Tools:让vs支持嵌入式Linux开发(转)

    转自:http://blog.csdn.net/lights_joy/article/details/49499743 1 什么是Visual EmbedLinux Tools Visual Embe ...

  8. 用VS2013+VELT进行Linux开发

    快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 1.1.1  什么是 ...

  9. 用vs2013+velt-0.1.4进行嵌入式开发 进行海思平台 UBOOT 开发

    1.1    什么是VELT VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发.利用这个插件 ...

随机推荐

  1. Day 17 time,datetime,random,os,sys,json,pickle

    time模块 1.作用:打印时间,需要时间的地方,暂停程序的功能 时间戳形式 time.time() # 1560129555.4663873(python中从1970年开始计算过去了多少秒) 格式化 ...

  2. LINUX KERNEL SPINLOCK使用不当的后果

    LINUX KERNEL SPINLOCK使用不当的后果 spinlock(自旋锁)是内核中最常见的锁,它的特点是:等待锁的过程中不休眠,而是占着CPU空转,优点是避免了上下文切换的开销,缺点是该CP ...

  3. 基于 Nginx XSendfile + SpringMVC 进行文件下载

    转自:http://denger.iteye.com/blog/1014066 基于 Nginx XSendfile + SpringMVC 进行文件下载 PS:经过实际测试,通过 nginx 提供文 ...

  4. 为类型定义取别名、环境变量、静态库与动态库(day03)

    一.为类型命名别名 struct node{ int num; struct node *next; }; typedef struct node node_t; node_t n; 使用typede ...

  5. 在UEditor编辑器的工具栏上加一行文字

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  6. 部署项目到tomcat时 访问项目404的问题总结

    使用tomcat服务器运行项目之前  需要把项目发布到(部署)tomcat上,然后启动服务器  运行项目 今天把以往正常运行的项目发布之后,运行时   竟然出现404  关键还不是我路径写错了   而 ...

  7. [bzoj1002][FJOI2007]轮状病毒_递推_高精度

    轮状病毒 bzoj-1002 FJOI-2007 Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2 ...

  8. 淘宝内部分享:MySQL & MariaDB性能优化

    发表于2015-01-20 16:26| 28875次阅读| 来源mysql.taobao.org| 22 条评论| 作者淘宝数据库团队 MySQL性能优化淘宝数据库 摘要:MySQL是目前使用最多的 ...

  9. 先验概率 vs 后验概率

    其实还不是很懂.看了这篇文章: http://blog.csdn.net/passball/article/details/5859878   事情还没有发生,要求这件事情发生的可能性的大小,是先验概 ...

  10. 4443: [Scoi2015]小秃玩矩阵|二分答案|匈牙利

    第K大看成第K小各种WA. .. 第K大也就是第n−K+1小.所以就能够愉快的二分答案了 二分答案找出比当前答案小的数的位置的坐标.推断一下能否够选出满足不在同一行同一列的n−K+1个数,然后就能够愉 ...