對于違反里氏替換原則的兩個類A和B,可以采用的候選解決方案中,正確的是()。
A. 盡量將一些需要擴展的類或者存在變化的類設(shè)計為抽象類或者接口,并將其作為基類,在程序中盡量使用基類對象進行編程
B. 創(chuàng)建一個新的抽象類C,作為兩個具體類的超類,將A和B共同的行為移動到C中,從而解決A和B行為不完全一致的問題
C. 將B到A的繼承關(guān)系改成組合關(guān)系
D. 區(qū)分是“Is-a”還是“Has-a”。如果是Is-a,可以使用繼承關(guān)系,如果是Has-a,應(yīng)該改成組合或聚合關(guān)系