Design Pattern Structural Model
出自VFP Wiki
目錄 |
Design Pattern Structural Model
本文原載於:http://blog.yam.com/saint0612/archives/2010700.html。 已經過原作者同意,轉載於此。
序
我為何會想要做這一個Design P attern 這也不是我想出來的,早在我看到這篇文章(.NET中Design Pattern Structural 模式)我就有想過要套用在FOXPRO中,因為,我覺得目前在使用FOXPRO的人都沒有一個習慣,就是如何去設計,設計模式在C,JAVA,.NET….都有不少的文章在討論,所以我想我會.NET 不如就把我自己會轉到FOXPRO來,讓大家有不一樣的感覺,哦…原來程式也可以如此設計,所以我花了點時間來做
說明
這樣的模式通常會涉及二個或是二個以上的物件互相組織在一起,利用這樣的方式可以做出更大,更複雜的系統,由於物件之間的組合並沒有一定的規則,通常是決定於需求,所以這樣的設計方式來說會較有彈性,而系統之間也不會相互影響,也因此這一種設計方式,可以從小系統開始一直愈改愈大,也可以和系統更緊密的結合
設計說明
為了要讓大家更清楚的了解,如何來設計,那我就用現在滿流行的一個遊樂器,Xbox 來做一個Demo,而這一個Xbox 我們要讓有三種功能
- 玩game
- 希望可以上網
- 還可以上網時收個人的mail
即然功能都列出來了,現在就開始設計,要可以玩game ,那就給你一個game object 所以我就先定了一個class 叫做 game_box 而這一個class 中最要的就是 play game,請參考(game_box.prg )
要上網,就再訂一個可以上網的class ,那收mail 尤於是要上網才能收,所以就把這一個收信的動作,放到這一個class 中(internet_box.prg)
測試
最後,要放入到xbox中時,我們分別要做一些測試,也就是在 Extreme program 中所提到的測試程式,為了確保有良好的品質,所以在裝機前 裝到xbox前,先測一下這二個object 是否可以正常運作請參考 Test_game_box.prg Test_internet_box.prg 如果測出來的結果是符合你需求的功能,如此可以把這二個 object 正式放到 Xbox中做整合測試 整合測試 尤由之前的測試都沒有問題,所以把東西放進來做整合測試 參考 Test_x_box.prg 而整個測出也是符合你的要求,我想這一個程式應該可以出貨了 ^_^
結論
這一個 Design Pattern 是一個不錯的設計,有興趣的人可以去www.netmag.com.tw 找出最原始的說明,或是去 MS 網站找或是 JAVA site 也有相關的討論
程式碼
&& && test game_box && clear locallo_game_box,lc_current_path,lc_game_box_path,lc_internet_box_path,lc_x_box_path lc_current_path = ADDBS(JUSTPATH(SYS(16,0))) ?lc_current_path lc_game_box_path = lc_current_path + "game_box.prg" set procedure to (lc_game_box_path) additive lo_game_box = createobject("game_box") ?lo_game_box.play_game()
&& && test internet box 相關功能 && clear locallo_internet,lc_current_path,lc_internet_box_path lc_current_path = ADDBS(JUSTPATH(SYS(16,0))) ?lc_current_path lc_internet_box_path = lc_current_path + "internet_box.prg" set procedure to (lc_internet_box_path)additive lo_internet = createobject("internet_box") ?lo_internet.connect_to_internet() ?lo_internet.get_mail()
&& && test xbox 相關功能 && clear local lc_current_path,lc_game_box_path,lc_internet_box_path,lc_x_box_path lc_current_path = ADDBS(JUSTPATH(SYS(16,0))) ?lc_current_path lc_game_box_path = lc_current_path+"game_box.prg" lc_internet_box_path=lc_current_path+"internet_box.prg" lc_x_box_path = lc_current_path + "x_box.prg" set procedure to (lc_game_box_path) additive set procedure to (lc_internet_box_path)additive set procedure to (lc_x_box_path) additive local lo_xbox lo_xbox = createobject("x_box") *--test 是否可以正常玩game lo_xbox.play_game() *-- 可否連上internet lo_xbox.connect_to_internet() *--可否收mail lo_xbox.get_mail()
&& && game_box && define class game_box as custom procedure play_game ? "我們可以一起玩Game" endproc enddefi
&& && internet_box && define class internet_box as custom procedure connect_to_internet ?"現在連上線了" endproc *--- procedure get_mail ?"收信中" endproc enddefi
&& && x_box && define class x_box as custom hidden gamebox hidden internetbox gamebox = null internetbox = null *--- procedure init this.gamebox = createobject("game_box") this.internetbox = createobject("internet_box") endproc *--- procedure play_game ?"我要玩Game" this.gamebox.play_game() endproc *--- procedure connect_to_internet ?"我要上網" this.internetbox.connect_to_internet() endproc *--- procedure get_mail ?"我想收信" this.internetbox.get_mail() endproc enddefi