天天看點

Alex學Ruby [關于多态關聯]

剛才看了李妙妙的這篇文章

感覺說的不是很明白, 并沒有從面向對象的角度說清楚,我的了解:

要了解多态關聯,首先要了解什麼是多态。 多态是面向對象一個特性。 同一個對象有不同的行為,叫多态。

在李舉的那個例子裡, article,p_w_picpath, sound,這三個model會有很多共同的行為, 如果沒有使用多态關聯,那麼每個model裡面,會有相同的行為,如果你在article裡加了 一個行為, 那麼過幾天,p_w_picpath裡也多了這麼一個行為,你就又得在p_w_picpath裡添加這個行為,多麻煩。既然有相同的行為,那麼可以抽象出來,那麼就是CatalogEntry, 這個類,是多态的。 而它對應的table,實作了和其他三個model對應表的關聯,是以叫多态關聯。這樣我們操作起來就實作了rails所倡導的dry。

多态關聯就是這樣的。

繼續閱讀