前言:我也是初學者,有不妥之處希望大家能提出意見。另外轉載請注明作者和出處,畢竟花了快一周的時間才完成。
<a href="http://www.cnblogs.com/category/33478.html?Show=All">浏覽更多設計模式與和申、紀曉岚的故事</a>
話說乾隆、和申、紀曉岚三人離京巡遊,一日來到一個村莊,村子有一戶人家住着一個漂亮姑娘和她的母親老夫人。姑娘喜歡三件事情:美食、購物、旅遊,但是這三件事情都是老夫人最厭惡的,她希望自己的女兒能做兩件事情:讀書、練字,可是姑娘一聽見這些東西就頭痛。
乾隆知道這些情況後想考察一下兩個大臣的能力,于是他給和申、紀曉岚每人三天時間,看誰能把姑娘泡到手,讓和申先來。
和申心想,這還不好辦嗎?我就投姑娘所好,Eating 、Shopping 、Travelling 三招把她搞定。和申他們有的是錢,第一天下來,姑娘非常滿意,沒想到老夫人火了,把和申臭罵了一頓,說他是個不學無術的小混混,從此再不讓進門。和申的泡妞計劃以失敗告終。
紀曉岚心想,我可不能像和申那樣,我要先和姑娘約定好暗号,出門的時候要說老夫人愛聽的,實際上做的是姑娘愛做的,說一套做一套,這樣兩個人都可以搞定了。暗号如下:
Reading:老夫人以為是去讀書,實際上出了門就去 Eating 和 Shopping 了
Writing:老夫人以為是去練字,實際上出了門就去 Travelling 了
這套暗号約定實際上就是個擴充卡。它把對外的接口從姑娘希望的 Eating 、Shopping 、Travelling 變成了老夫人希望的 Reading 和 Writing ,這樣就可以順利通過老夫人這一關了;但實際上做的還是姑娘希望的 Eating 、Shopping 、Travelling ,這樣姑娘也滿意。
哈哈,這應該就是投其所好,說一套做一套了吧!事情從表面上看是一回事,實際上内部的實作可能是另一回事。最後當然是紀曉岚赢得了芳心。
下面我們用代碼來講述這個故事吧:
Adapter.cs
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) using System;
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) using System.Collections.Generic;
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) using System.Text;
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) namespace Adapter
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) ...{
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) //姑娘希望的接口:但是由于老夫人不喜歡這些東西,不能直接使用了
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) public class Girl
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) ...{
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) public void Eating()
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) ...{
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) System.Console.WriteLine("不用裝樣子了,我要吃大閘蟹!");
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) System.Console.WriteLine();
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) }
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) public void Shopping()
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) System.Console.WriteLine("不用裝樣子了,買一件今年最流行的小背心!");
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) public void Travelling()
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) System.Console.WriteLine("不用裝樣子了,後山是個不錯的地方哦!");
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) }
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) //老夫人希望的接口:要想約姑娘出來,必須告訴老夫人,我們是去做您喜歡的事情去了
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) public interface Mother
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) void Reading();
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) void Writing();
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) //紀曉岚和姑娘的約定,精髓就是客戶喜歡什麼就讓他看見什麼,實際上做的還是原來的那一套東西
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) public class Agreement : Mother
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) Girl girl = new Girl();
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) //說的是去讀書,那是給老夫人(用戶端)看的,實際上呢?
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) public void Reading()
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) girl.Eating();
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) girl.Shopping();
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) public void Writing()
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) girl.Travelling();
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) }
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) 用戶端:Client.cs
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) class Client
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) static void Main(string[] args)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) Agreement ag = new Agreement();
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) Console.WriteLine("紀曉岚:老夫人,我們去讀書了!");
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) Console.WriteLine("老夫人:乖,好好讀呀!");
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) ag.Reading();
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) Console.WriteLine();
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) Console.WriteLine("紀曉岚:老夫人,我們去練字了!");
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) Console.WriteLine("老夫人:好呀好呀!");
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) ag.Writing();
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) System.Console.Read();
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創)
擴充卡模式 — Adapter Pattern — 和申、紀曉岚泡妞比賽的故事(原創) 運作結果如下圖:
本文轉自左洸部落格園部落格,原文連結:http://www.cnblogs.com/myqiao/archive/2005/09/09/233343.html,如需轉載請自行聯系原作者