在維基百科上聚合類擴展基類 - 違反LSP?
的Liskov Substitution Principle(LSP)說我有一個Alien
類的numFingers
屬性*。偶爾,我需要從數據庫中提取numFingers
的總和,並按照其他字段值進行分組。在這些情況下,我不需要單獨處理每條記錄,但我確實需要訪問它們的許多功能 - 能夠獲取屬性,對它們執行一些基本邏輯等。這可能包括從數千記錄,所以當數據庫查詢可以完成對我的求和工作時,實例化數以千計的對象是沒有意義的。
我想做一個擴展類叫做AlienAggregate
,它的屬性是從分組的&總計查詢中設置的。這個班會讓我打電話給Alien
的任何方法。 只有這兩個類的功能區別,是GetID()
。聚合類沒有ID,因爲它的數據來源於任意數量的記錄。因此,撥打GetID()
AlienAggregate
會引發異常。
這是違反Liskov替代原則嗎?有沒有更好的方法來處理對GetID()
的呼叫?有沒有更好的方法來設計Alien
和AlienAggregate
類之間的關係?
*實際名稱可能因爲我可以改變。
我想讓AlienAggregate擴展Alien,因爲我需要兩個類中的相同邏輯。 – keithjgrant 2011-01-22 16:09:16