2011年8月1日 星期一

軟體架構設計﹣落實架構設計的 Framework

       
        現今線上遊戲,內容五花八門,不論是怪物種類、武器、裝備、技能不可勝數,如果內容都一一撰寫,程式碼絕對是多的難以想像,我們可以應用 Framework 的概念,讓我們省略了那些不斷重複的步驟。


讓我們來看一下 Framework 的應用吧!

我們以遊戲解任務為例:

當我們接受一個打10隻山豬的任務,並且去完成這項任務。
裝備不同的武器,點選攻擊山豬,直到山豬死亡,如此重複十次將能完成任務,並且回報任務,而這些過程,將可以細分為:

1. 點選NPC
2. 接受任務
3. 選擇攻擊方式
4. 攻擊對象
5. 山豬損血
6. 山豬反擊
7. 山豬死亡
8. 計算打死山豬數量
9. 完成任務
10.任務回報

你發現了嗎? 其實每個職業都必須完成這些步驟才能完成任務並獲得獎勵,但不同職業的攻擊方式必然是不同的,如騎士用劍砍、法師用魔法、弓箭手用弓箭射,我們需要因為不同職業的攻擊手段而把這10個步驟每個職業都一一撰寫嗎?其實不用,我們只要利用 Framework 的概念將攻擊方式抽象化,讓各個職業去實做,如此一來我們就只需將任務撰寫一次,讓不同職業去實做攻擊方式,就能達到不同職業去完成這項任務了。

那我們再把 5 . 6 步驟抽象化,不同的怪物損血,不同的怪物反擊,只要讓怪物損血 、反擊自行去實做,是不是我們也能打不同的怪物了呢,你是否發現了什麼? 只要在抽離 1 . 2 . 9 . 10 就連任務也多樣化了,那這些步驟都抽離了,那豈不是這些流程什麼也沒做了嗎? 沒錯! 他就是什麼也沒做,但不得不說他也什麼都做了不是嗎?他就像個筒子一樣,一個空的筒子是無用的,但裝了水就能澆花、裝肥料能為土壤施肥,因而讓筒子有了他的無用之用, Framework 就像這個筒子,當我放入野豬就是野豬任務、放入蝙蝠就是蝙蝠任務, 最後當這些步驟都抽離後,就成了解任務流程的 Interface ,雖然他什麼也沒做,但他是各個抽象類別溝通的橋樑,也同時約束了這個缺一不可的任務,使的每個步驟都必能實做。
張貼留言