<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ~~~ 【時間:2012年5月25日?19:10???地點:北京西三環某賓館樓下的燒烤店】 ~~~ ~~~ ??軟考前一天,幾個“進京趕考”的“準北漂者”,為了第二天考一個好成績,一致決定殺向樓下燒烤店。 ~~~ ? 沒到門口呢,小A搶先喊道“服務員,來只烤雞翅,來串烤羊肉!”,小B一看自己喊晚了,處于“程序猿”的職業精神,直接喊了一句“Call A”。“小哥,在北京,要講禮貌啊,不要說臟話!”服務員小李不慌不忙的說道。“啊,那個,剛才說的不是臟話,意思是“同上””,小B還自嘲一句“唉,程序猿的悲哀啊!”。。。服務員笑了笑,去通知燒烤老王了。這時磨嘰的小C才到,看到一頭郁悶的小B直接忽視,顯然了他的性格。“服務員,來只烤雞翅,來串烤羊肉!”。服務員小張“好的,請稍等。”,也去通知老王去了。 ? 話說,三個程序猿干坐著等,那肯定是閑不住的。小B,憋不住了, ???“話說,咱們這也是進京趕考,你們說明天的考試能不能碰到原題呢?”。 ???“每年都有一道相近的原題”。小A答道。 ???“可憐我的設計模式不怎么會呢,下午題怎么過啊。” ???“學過三層嗎?” ???“學過啊,想當年,我學三層時,那可謂是。。。。哎呀,別打了,打傻了你們賠的起嗎”。 ???“就你那智商,本來就是負” ???“切,隨便考,看看我會不會!” ? “那你說說我們現在遇到的三層吧”一直不語的小C說道。 ? “不許說服務員-廚師-采購員這個版本。”小A搶先將了小B一軍。 ? “說就說。who怕who啊。”,小B,嘴上強硬,心里實則有點發虛。沉下氣來,仔細想了想。不理睬小A的中途搗亂,5分鐘過后,“有了!” ? “你有了?恭喜恭喜啊!什么時候出生??哈哈哈哈~”小A得瑟的笑著。 ? “去你的,說正題。話說,這個三層就拿我們做實驗吧。我們三個就是表示層,剛才那兩個服務員是業務邏輯層,而烤肉的師傅就是數據訪問層”。頓了頓,繼續說,“我們只管點燒烤和吃,服務員管通知,上菜,結算,而烤肉師傅則只負責烤肉”。每個角色,顧客換來換取,服務員也換,烤肉師傅也可以換,不管怎么變化,只要這個結構不變,就沒有問題。 ? “這是您三位的烤羊肉和烤雞翅,請慢用!”服務員小李把燒烤給端上來了。 ? “先吃先吃”,小A和小B爭著搶大的吃。 ? “嗯,說的不錯,回去把這個用代碼實現了哈”,小C拿起剩余的那只雞翅膀也啃了起來。。。 【時間:2012年5月25日?20:00???地點:北京西三環某賓館】 ? “吃完了,該工作了”小C看到打算躺下看電視的小B說道。 ? “什么工作?” ? “當然是寫代碼了,你不會又把任務給吃了吧” ? “這小子肯定不會,你就放過他吧”小A諷刺道。 ? “誰說不會的,等著”。小B翻開自己的筆記本,開始噼里啪啦的敲打著。。。 ? 3分鐘過去后。。。 ? "寫出來了,請看" ~~~ static void Main(string[] args) { Console.WriteLine("小A:來只烤雞翅"); Console.WriteLine("服務員1:烤雞翅一只"); Console.WriteLine("烤肉師傅:烤雞翅"); Console.WriteLine(""); Console.WriteLine("小A:來只烤羊肉"); Console.WriteLine("服務員1:烤羊肉一串"); Console.WriteLine("烤肉師傅:烤羊肉"); Console.WriteLine(""); Console.WriteLine("小B:來只烤雞翅"); Console.WriteLine("服務員1:烤雞翅一只"); Console.WriteLine("烤肉師傅:烤雞翅"); Console.WriteLine(""); Console.WriteLine("小B:來只烤雞翅"); Console.WriteLine("服務員1:烤雞翅一只"); Console.WriteLine("烤肉師傅:烤雞翅"); Console.WriteLine(""); Console.WriteLine("小C:來只烤羊肉"); Console.WriteLine("服務員2:烤羊肉一串"); Console.WriteLine("烤肉師傅:烤羊肉"); Console.WriteLine(""); Console.WriteLine("小C:來只烤雞翅"); Console.WriteLine("服務員2:烤雞翅一只"); Console.WriteLine("烤肉師傅:烤雞翅"); Console.WriteLine(""); Console.ReadLine(); } ~~~ ![](https://box.kancloud.cn/2016-01-14_56970cf1e91ed.png) ? ? “不是吧,過程式的代碼啊,虧你還是考軟考的人,真是給我丟臉哎!”一向不怎么鄙視別人的小C也禁不住開始發表感嘆! ? “他就是個吃貨,把面向對象全吃了,哈哈”小A幸災樂禍道。 ? “切,別著急啊,開個玩笑,這是先讓你們看看最終的結果。等著啊,下面就是面向對象版的” ? 10分鐘過去后。。 ? “啊,老天,經過扼殺了我N+1個腦細胞,終于做出來了”小B悲嘆道。 ![](https://box.kancloud.cn/2016-01-14_56970cf20a289.png) 顧客類: ~~~ using Servers; namespace User { /// <summary> /// 顧客類 /// </summary> class User { string name; Servers.Servers server; public User(string name) { this.name = name; } public void SetServer(string name) { this.server = new Servers.Servers(name); } public void Bake() { Console.WriteLine(name+":來只烤雞翅"); server.KaoJiChi(); Console.WriteLine(); Console.WriteLine(name + ":來串烤羊肉"); server.KaoYangRou(); Console.WriteLine(); } static void Main(string[] args) { User a = new User("顧客小A"); User b = new User("顧客小B"); a.SetServer("服務員小李"); b.SetServer("服務員小李"); a.Bake(); b.Bake(); User c = new User("顧客小C"); c.SetServer("服務員小張"); c.Bake(); Console.ReadLine(); } } } ~~~ 服務員類: ~~~ using Cooks; namespace Servers { /// <summary> /// 服務員類 /// </summary> public class Servers { string name; Cooks.Cooks cook=new Cooks.Cooks("烤肉老王"); public Servers(string name) { this.name = name; } /// <summary> /// 烤羊肉 /// </summary> public void KaoYangRou() { Console.WriteLine(name + ":烤羊肉一串"); cook.BakeMutton(); } /// <summary> /// 烤雞翅 /// </summary> public void KaoJiChi() { Console.WriteLine(name + ":烤雞翅一只"); cook.BakeChickenWing(); } } } ~~~ 烤肉者類: ~~~ namespace Cooks { public class Cooks { string name; public Cooks(string name) { this.name = name; } /// <summary> /// 烤羊肉 /// </summary> public void BakeMutton() { Console.WriteLine(name +":烤羊肉"); } /// <summary> /// 烤雞翅 /// </summary> public void BakeChickenWing() { Console.WriteLine(name + ":烤雞翅"); } } } ~~~ ![](https://box.kancloud.cn/2016-01-14_56970cf2178e3.png) ???“勉勉強強吧,這樣顧客在變化中,服務員在變化,就連烤肉師傅也可以換,這些變化都不會影響整個業務流程。每層的變化都是獨立的,不會對其他的有影響。這就是人們常說的“解耦”。”小C總是高深莫測的樣子。扶了扶眼睛,繼續說道, ? “其實利用分層,不光是解耦,還是可以快速開發。一個項目,分好多人,有團隊的每個人去并發的開發一層,可以節約大量的時間。當然復用也是很有幫助的。” ? “哈,這次吃烤肉沒白吃啊,居然又邂逅三層了,又練習了對三層的應用,嗯,收獲不小 ,希望明天考試也這樣順利就好了”小B發著感慨。 ? “不早了,都睡覺了,明天還要考試呢”小C提醒道。 ? “等會等會,我還沒有看完電視呢!”中途跑去看電視的小A嚷嚷著。 ? “現在網絡多發達啊,電視劇都放到網絡上了,只要你在任何時間,任何地點,任何一臺可以聯網的機子,你就可以看想看的電視劇了,完全不受約束。”小B顯擺的說道。突然眼睛一亮, ? “又是三層!!”小B和小C同時喊道。然后相互望了一眼,哈哈大笑起來。 ? “神經,睡覺了!”小A受不了他們,躺下進入 了夢鄉。。。。?
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看