一個工作中遇到的程序設計問題

功能是合同的數(shù)據(jù)變更功能,需要將需要比對合同變更前后的字段然后返回字段結(jié)果。
合同有多種,例如有:收購合同、合作合同、戰(zhàn)略合同等。。。
合同會有通用字段,不同類型的合同會有獨立的字段。

合同A:
通用字段a
通用字段b
A字段1
A字段2

合同B:
通用字段a
通用字段b
B字段1
B字段2

如果用模板方法做通用處理:

abstractCompareService {
    
    commonCompare() {
        compare a
        compare b
        ...
    }

    // 抽象方法,讓實現(xiàn)類實現(xiàn)
    abstract bizCompare();

    compare() {
        commonCompare();
        bizCompare();
    }
}

ACompareService extends abstractCompareService {
    
    bizCompare() {
        compare A字段1
        compare A字段2
    }
}

如果用組合的方式:


如果使用組合大于繼承的原則:
CompareService {
    ContractCompareService service;

    compare() {
        commonCompare();
        service.bizCompare();
    }

}

A去實現(xiàn)ContractCompareService接口
ACompareService implements ContractCompareService {
    bizCompare() {
        compare A字段1
        compare A字段2
    }
}

后來仔細想了(請教),如果只是單純的需要抽出共通的通用字段比較邏輯,使用模板方法比較合適;如果是側(cè)重于方法的抽象,例如合同A支持打印,合同B不支持打印,使用組合比較合適。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容