程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 懶羊學習《深入淺出設計模式》C#代碼手札之策略模式

懶羊學習《深入淺出設計模式》C#代碼手札之策略模式

編輯:.NET實例教程
 花了近兩個月的時間把《深入淺出設計模式》走馬觀花似的翻了一遍,除了把模式的名稱記得以外,其它的也就寥寥無幾了。為了更好的鞏固於是決定第二次翻閱這本書,而這次主要是目的就是通過自己會的東西把裡面模式代碼拼湊起來。以下所有文字在於記錄懶羊學習這本書的一個過程,其中會存在一些詞語的用詞不當,以及專業性用詞的錯誤,大家如果有所發現還請跟貼提醒,但文章中不會做相應修改,但以後的文章會采用正確的說法。沒有人剛開始就會寫出絕對正確的東西,希望大家來一起見證我的成長。
策略模式
第一章的鴨子搞得我有點頭昏,雖然在這個城市鴨子很受歡迎,而且我也會經常去搞點鴨子來吃吃,但這次這麼多的鴨子的確有點心煩,除了會飛會叫外,還會出現一堆的模型鴨,當然還有叫聲各異的鴨子,經過N多天的努力,終於拼湊了代碼,給我的感覺是再多的鴨子,找出它們的共同點與不同點,共同點全部塞在一起(鴨子的基類),不同點則為這些不同點的共性建立一個接口,然後再各個繼承。而在具體使用的時候,盡量的用個東西代替,也就是可以在後來代碼的時候能夠進行替換,就比如說學生上課,這節課是計算機呢還是數學呢?可以先用一門計算機去搶下來,也就是確定這節課是計算機,最後由誰來上到時換個老師就可以了。鴨子中就是如此,先用“叫”這個接口頂著,至於後來用“呱呱叫”還是“吱吱叫”或“不叫”以後使用時再通過特定的函數進行設定。現在還回到鴨子:
首先所有的鴨子都會游泳,而且都是一樣的游法,不會出現比如狗刨式啊,蛙式啊之類的方式,那麼我們就可以在基類中使用swim(),而且只定義一種就可以了,而鴨子中有些會飛,有些不會飛,有些會呱呱叫,有些會吱吱叫,甚至出現了啞吧鴨(還好不是狗,否則肯定宰了喂肚子)。那麼這些飛啊叫啊最好能夠以後置換,而這些置換最好不要影響之前寫的代碼,如果影響代碼還要設計模式干嘛,直接每次重寫不就得了。因此我們先將“飛”與“叫”分別建立兩個接口,然後把這些“會飛”“不會飛”“呱呱叫”“吱吱叫”“不叫”都繼承這兩個接口。而在鴨子基類中使用這兩個接口,並且可以置換接口中的具體對象。如接口QuackBehavior,到時候通過這樣 
 public void setQuackBehavior(QuackBehavior Qb)
        {
            quackBehavior = Qb;
        }
的代碼外部置換就可以了。
     想想這樣還真是方便,如果再需要來一個“汪汪叫”的鴨子,那麼我們再建立一個“汪汪叫“的鴨子類,並且去繼承QuackBehavior,然後再具體使用的時候來通過置換函數來置換,這樣一只學狗叫的鴨子就誕生了,還是挺有意思的,估計這只狗逮鴨子可一逮一個准。 本文代碼下載:Lesson Strategy.rar
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved