1.鏈表實現類圖
2.操作元素的實現類圖
我們可以看到,當我們企圖依託於數據結構去實現某些解決策略的時候,我們不需要再構造一個複雜的新鏈表,比如我們的RevenueTable,去實現營業額的統計時,我們不會再重寫它的插入,刪除方法,我們只希望在遍歷的時候自動實現某些操作,這樣我們繼承之後實現就很舒服了。
在第七章裏面的營業額的代碼,我們看一下,其實僅僅只需要:幾行代碼,就能夠實現。
這就是多態的魅力。而我這種寫法,也叫做模板模式。有興趣的同學可以去了解一下。當數據結構和設計模式結合在一起,你去解決很多問題,就會非常非常簡單!!
package DoubleDirTable;
import com.table.line.SingleElement;
import com.table.line.SumSingleTable;
public class RevenueTable extends OperationDDTable {
public RevenueTable(int value) {
super(value);
}
public int sum;
@Override
public int operation(IntDoubleDirElement intDoubleDirElement) {
IntDoubleDirElement selectElement = intDoubleDirElement.getNext();
SumSingleTable t1 = new SumSingleTable();
while (selectElement!= null) {
if (selectElement.getLast()!= null){
int dfValue = selectElement.getValue() - selectElement.getLast().getValue();
dfValue = Math.abs(dfValue);
t1.add(new SingleElement(dfValue));
}
selectElement = selectElement.getLast();
}
sum+= t1.min();
return 0;
}
}