前言:我也是初学者,有不妥之处希望大家能提出意见。另外转载请注明作者和出处,毕竟花了快一周的时间才完成。
话说乾隆、和申、纪晓岚三人离京巡游,一日来到一个村庄,村子有一户人家住着一个漂亮姑娘和她的母亲老夫人。姑娘喜欢三件事情:美食、购物、旅游,但是这三件事情都是老夫人最厌恶的,她希望自己的女儿能做两件事情:读书、练字,可是姑娘一听见这些东西就头痛。
乾隆知道这些情况后想考察一下两个大臣的能力,于是他给和申、纪晓岚每人三天时间,看谁能把姑娘泡到手,让和申先来。
和申心想,这还不好办吗?我就投姑娘所好,Eating 、Shopping 、Travelling 三招把她搞定。和申他们有的是钱,第一天下来,姑娘非常满意,没想到老夫人火了,把和申臭骂了一顿,说他是个不学无术的小混混,从此再不让进门。和申的泡妞计划以失败告终。
纪晓岚心想,我可不能像和申那样,我要先和姑娘约定好暗号,出门的时候要说老夫人爱听的,实际上做的是姑娘爱做的,说一套做一套,这样两个人都可以搞定了。暗号如下:
Reading:老夫人以为是去读书,实际上出了门就去 Eating 和 Shopping 了
Writing:老夫人以为是去练字,实际上出了门就去 Travelling 了
这套暗号约定实际上就是个适配器。它把对外的接口从姑娘希望的 Eating 、Shopping 、Travelling 变成了老夫人希望的 Reading 和 Writing ,这样就可以顺利通过老夫人这一关了;但实际上做的还是姑娘希望的 Eating 、Shopping 、Travelling ,这样姑娘也满意。
哈哈,这应该就是投其所好,说一套做一套了吧!事情从表面上看是一回事,实际上内部的实现可能是另一回事。最后当然是纪晓岚赢得了芳心。
下面我们用代码来讲述这个故事吧:
Adapter.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace Adapter
客户端:Client.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace Adapter
运行结果如下图:
浏览更多设计模式与和申、纪晓岚的故事