在某個資訊系統中,建立了乙個使用者類,代表可以登入系統的使用者。使用者類的屬性有姓名,密碼等。一段時間後,想給系統新增個性化桌面的功能。於是新增了乙個新的類,桌面類。桌面類與使用者類存在一對一關係。每個使用者應當擁有自己所對應的桌面,即使用者類需要進行修改,以滿足需求。這破壞了設計模式中提到的開閉原則(對修改封閉,對擴充套件開放)。如果不修改使用者類,設計看起來會很怪,也很麻煩。
同樣的問題在關聯式資料庫裡則清晰的多。開始建立乙個使用者表,包括姓名,密碼等字段。隨後,建立桌面表,桌面表包含與使用者表建立關係的外來鍵。利用查詢動態的在使用者表與桌面表之間建立關係即可。不用對原來的設計進行任何改動。
原因分析:
物件導向對關係的處理是靜態的,也就是物件之間的關係是通過程式一次性宣告的,不能動態修改。而關聯式資料庫則可以利用查詢在表之間動態建立關係。關聯式資料庫對關係的處理更靈活,功能更強大。
解決方案:
可以將關係的描述單獨抽取出來表示,採用一定的注入機制將**注入到主類裡去。
電腦不分盤有沒有關係
1 可以按自己需要在c盤重灌系統,而不動到其它盤的資料。2 不同的區存不同的檔案,將不常修改的檔案放在乙個區,可以減少磁碟碎片的產生。3 便於分類管理,資料夾易被人改名,誤刪除等。4 如果某區中毒可直接格式化,而不影響其它分割槽。5 某想將某區備份,可使用ghost對於分割槽備份,簡單易操作。6 對...
vue沒有關係的元件之間相互通訊
當元件之間沒有關係的時候,可以採用vuex來使元件可以相互可以觸發事件 在vuex中定義乙個變數msg import vue from vue import vuex from vuex vue.use vuex export default new vuex.store mutations act...
CPU位寬與記憶體定址能力沒有關係!
最近面試時遇到乙個問題,特意看看有多少人認為cpu的位寬意味著定址能力,結果發現也有相當一部分人被誤導!請注意 2 cpu位寬次方這種計算方法是明顯錯誤的!系統上也是,一早就有技術支援64g記憶體,只不過微軟為錢,沒在32位的桌面級電腦上允許那項功能!先講cpu定址能力!一般廠商標示多少位cpu是說...