需求:
- 有一個在線教育的系統一個練習題模塊,需要在練習模塊設計題目,題目有母題(每種型別題的典型題),重點題和普通的題目,
- 一道題可能是母題也可能是重點題,或者兩者兼得;但如果某道題沒有分配型別,那它就不可能是母題,因為型別題是根據母題來分配的,
分析:
- 母題、重點題、普通題都是題目的一種,那么題目就是他們仨的最高抽象,這么來看題目可以暫定為介面(因為介面比繼承關系要好得多),
- 母題和重點題不是相互排斥的關系,也不是相互包含的關系(如果使用聚合,那么到底是母題包含重點題?還是重點題包含母題?這肯定不對吧)所以這兩者的關系不太好確定,那么最后再回來看他,但我覺得母題和重點題應該是同級的關系
- 還需要考慮一個問題,母題和型別題之間的關系,母題一定是型別題,但型別題不一定是母題,這么看來是型別題包含了母題
題目可能是有型別的,也可能是無型別的,
那我們來看看現在能整理出什么來

- 看似還可以,但是沒有體現出母題和重點題之間的關系,如果一道題既是母題又是重點題,那么將無法表示,
- 那么,如果我們將母題和重點抽象為介面呢?嘗試這種方案,普通題不能再抽象,他就是物體,注意,無型別的題需要特別關注,母題不可能沒有型別,因為型別就是它自己,而重點題和普通題是可以沒有型別的,
畫出草圖,這樣我們解決了一道題既是母題又是重點題無法表示的問題

注意:母題和無型別互斥的,所以在型別的介面里添加方法判斷是否有型別

- 不過這樣會導致一個問題,一道無型別的題也可以是母題,這就得在母題的介面去添加判定是否有型別的方法,這也是我能想到的最好的解決方案,希望如果您有更好的點子,煩請提出意見,感激不盡,
PS:我也想過是否可以用一個題目類來表示所有的題,母題和重點題用類中一個屬性來表示,沒有沒么做的原因就是“上帝類“太冗雜,改動起來十分困難,擴展性極差,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/256813.html
標籤:其他
上一篇:H5開發坑總結
下一篇:實作數字滾動效果
