Win8.1应用开发之适配器模式(C#实现)
2024-10-01 07:06:15
实际上适配器模式是用于解耦。设想一下我们的程序模块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
最新文章
- windows上面捕获声卡数据
- 记录sql语句的执行记录,用于分析
- C++之路进阶——bzoj1821(部落划分)
- CentOS访问Windows共享文件夹的方法
- Android -- 程序判断手机ROOT状态,获取ROOT权限
- -g vs -rdynamic
- Teradata 的rank() 和 row_number() 函数
- 判断手机还是PC浏览器
- [android开发之内容更新类APP]二、这几日的结果
- 我的Python成长之路---第二天---Python基础(8)---2016年1月9日(晴)
- 【web开发学习笔记】Structs2 Action学习笔记(一个)
- 企业架构研究总结(31)——TOGAF架构内容框架之内容元模型(下)
- git的学习笔记(二):git远程操作
- FIDDLER的使用方法及技巧总结
- 使用Apache JMeter对SQL Server、Mysql、Oracle压力测试(一)
- 8、jsのBOM对象与DOM对象
- python--第八天总结
- 虚拟机安装及配置(centOs7)
- JDBC使用MYSQL的LOAD DATA LOACAL INFILE和LOAD DATA INFILE
- Python 7 -- 文件存储数据