java - 如何方便某個(gè)類(lèi)在以后的拓展中比較方便的添加屬性?
問(wèn)題描述
假設(shè)有地圖上有一個(gè)醫(yī)院和公路兩個(gè)標(biāo)識(shí),而這兩個(gè)標(biāo)識(shí)擁有屬于自己的屬性數(shù)據(jù):例如 醫(yī)院有等級(jí)、建筑物數(shù)量、病人數(shù)量,占地面積、名字等屬性;公路有名字、等級(jí)、長(zhǎng)度、建成時(shí)間等屬性。 即不同類(lèi)型的地圖標(biāo)識(shí)有不同的屬性數(shù)據(jù),同時(shí)也需要考慮將來(lái)還會(huì)添加新的屬性。請(qǐng)問(wèn)大家,能否說(shuō)一個(gè)大概的設(shè)計(jì)思路(只是靜態(tài)類(lèi)圖的設(shè)計(jì)思路)? PS:我自己想的是通過(guò)裝飾者模式來(lái)實(shí)現(xiàn),但是那樣的話(huà)在以后的擴(kuò)展中每當(dāng)添加一個(gè)屬性時(shí)就要對(duì)原來(lái)的類(lèi)再進(jìn)行一次裝飾,或者直接侵入原先設(shè)計(jì)好的類(lèi),添加屬性。
問(wèn)題解答
回答1:haha ,為何不用Dictionary類(lèi)型,比如說(shuō)使用map來(lái)存儲(chǔ)鍵值對(duì)?
回答2:應(yīng)該要符合開(kāi)閉原則,一個(gè)實(shí)體類(lèi)創(chuàng)建好后最好不要做修改,使用繼承就可以了,在原來(lái)的屬性上增加新的屬性,但是又不破壞原來(lái)的結(jié)構(gòu)
回答3:對(duì)象組合優(yōu)先于繼承
相關(guān)文章:
1. javascript - 在靜態(tài)頁(yè)面上用load 引入的頁(yè)面文件問(wèn)題?2. 代理 - 一個(gè)nginx需求,訪問(wèn)web服務(wù)時(shí),若用戶(hù)為測(cè)試用戶(hù)則轉(zhuǎn)發(fā)到web服務(wù)的測(cè)試版本3. javascript - webpack打包后的bundlejs文件代碼不知道什么意思.4. java后臺(tái)導(dǎo)出頁(yè)面到pdf5. java - instance method中 static后的<K>是什么意思?6. css3 - css如何實(shí)現(xiàn)素描描邊效果7. css - 關(guān)于ul的布局8. css - 如何使用 vue transition 實(shí)現(xiàn) ios 按鈕一樣的平滑切換效果9. javascript - vue組件通過(guò)eventBus通信時(shí),報(bào)錯(cuò)a.$on is not a function10. html - 哪些情況下float會(huì)失效?
