功能是合同的數(shù)據(jù)變更功能梯澜,需要將需要比對合同變更前后的字段然后返回字段結(jié)果。
合同有多種渴析,例如有:收購合同腊徙、合作合同简十、戰(zhàn)略合同等。撬腾。。
合同會(huì)有通用字段恢恼,不同類型的合同會(huì)有獨(dú)立的字段民傻。
合同A:
通用字段a
通用字段b
A字段1
A字段2
合同B:
通用字段a
通用字段b
B字段1
B字段2
如果用模板方法做通用處理:
abstractCompareService {
commonCompare() {
compare a
compare b
...
}
// 抽象方法,讓實(shí)現(xiàn)類實(shí)現(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去實(shí)現(xiàn)ContractCompareService接口
ACompareService implements ContractCompareService {
bizCompare() {
compare A字段1
compare A字段2
}
}
后來仔細(xì)想了(請教)场斑,如果只是單純的需要抽出共通的通用字段比較邏輯漓踢,使用模板方法比較合適;如果是側(cè)重于方法的抽象漏隐,例如合同A支持打印喧半,合同B不支持打印,使用組合比較合適青责。