功能是合同的數(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不支持打印,使用組合比較合適。