以練代學設計模式(1)命令、單例、備忘錄,與簡單工廠

我這人是很提倡以練代學的,光說不練假把式,看我QQ暱稱,just do it。
書上得來終覺淺,我有加設計模式的羣,裏面大佬很多,可是好像都是書上的大佬,我野很差反駁他們。有人願意問我,我就兩個字:實戰。算法

最近接手了一個小項目,運動會的管理系統,正好我在學習設計模式,就接過來了。數據庫

項目需求是這樣的:設計模式

任務:參加運動會有n個學校,學校編號爲1……n。比賽分紅m個男子項目,和w個女子項目。項目編號爲男子1……m,女子m+1……m+w。不一樣的項目取前五名或前三名積分;取前五名的積分分別爲:七、五、三、二、1,前三名的積分分別爲:五、三、2;哪些取前五名或前三名由學生本身設定。(m<=20,n<=20)
運動項目能夠包括50、100、200,400,1500米,跳高,跳遠,標槍,鉛球鐵餅等。
一個選手信息:
姓名、選手編號、學校編號、性別、年齡。
一個運動項目信息:
項目名稱、項目編號、適用性別、成績排名規則。
一個選手參加運動項目成績信息:
選手編號、項目編號、選手成績、排名、得分。
運動會選手列表:數組名、總規模、當前選手個數
運動會運動項目列表:數組名、總規模、當前運動項目個數
運動會選手參加運動項目成績列表:數組名、總規模、當前選手參加運動項目成績個數數組

功能要求:
對選手信息、運動項目信息、成績信息進行管理。可參考以下:
1) 能夠輸入各個項目的前三名或前五名的成績;
2) 能統計各學校總分,
3) 能夠按學校總分排序輸出;
4) 能夠按學校編號查詢學校某個項目的狀況;能夠按項目編號查詢取得前三或前五名的學校。
5) 數據存入文件並能隨時查詢
6) 規定:輸入數據形式和範圍:能夠輸入學校的名稱,運動項目的名稱。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
接手這個項目的時候,正好遇上技術人員跑路,耽誤了一半工期。這要是正常狀況,我就不會接,可是吧,奈何咱學墨家的,實在按不住心裏一股正義衝動,就接下來了。奈何咱就是那種工做狂,徹夜加班就沒讓正義遲到。ide

轉回正題。學習

看到這個項目需求,心裏第一反應是什麼?數據庫。反正在我這裏是不可能去用文本文件,要是逼我那我考慮一下。
那數據庫,繞不開的就是單例模式了。好,單例模式定下來了。設計

接下來呢?設計模式六大原則熟嗎?從原則出發,一切從根本抓起。
先是依賴倒置原則,面向接口,左右排開。
其次是單一職責,界面就是界面,數據庫就是數據庫。
以後這倆模塊,它們要交互啊,要交互那用什麼設計模式?剛開始個人想法是:中介+命令結合一下,而後晚上轉念一想,要不中介+觀察吧,真是被這中介給迷住了,由於界面好幾個,數據庫功能也好幾個,可是它們都是單線聯繫的,都是單線聯繫的。對象

這點很重要,都是單線聯繫的,一個界面對應的後臺算法就一個,那我爲何不把需求封裝成對象呢?那不就是一個命令模式的事情了。那這麼多界面怎麼辦?簡單工廠啊,難不成還要去搞個策略出來?簡單工廠,簡簡單單纔是真嘛。排序

那我找一下類圖啊,畫的比較粗糙一點,只可意會。接口

相關文章
相關標籤/搜索