功能是合同的数据变更功能,需要将需要比对合同变更前后的字段然后返回字段结果。
合同有多种,例如有:收购合同、合作合同、战略合同等。。。
合同会有通用字段,不同类型的合同会有独立的字段。
合同A:
通用字段a
通用字段b
A字段1
A字段2
合同B:
通用字段a
通用字段b
B字段1
B字段2
如果用模板方法做通用处理:
abstractCompareService {
commonCompare() {
compare a
compare b
...
}
// 抽象方法,让实现类实现
abstract bizCompare();
compare() {
commonCompare();
bizCompare();
}
}
ACompareService extends abstractCompareService {
bizCompare() {
compare A字段1
compare A字段2
}
}
如果用组合的方式:
如果使用组合大于继承的原则:
CompareService {
ContractCompareService service;
compare() {
commonCompare();
service.bizCompare();
}
}
A去实现ContractCompareService接口
ACompareService implements ContractCompareService {
bizCompare() {
compare A字段1
compare A字段2
}
}
后来仔细想了(请教),如果只是单纯的需要抽出共通的通用字段比较逻辑,使用模板方法比较合适;如果是侧重于方法的抽象,例如合同A支持打印,合同B不支持打印,使用组合比较合适。