public abstract class BasePattern extends Object implements IIdentityResolver<IIdentity>
通过模板方法,实现不同领域模型的match
方法动态分发
Double Dispatch:determines the method to invoke at runtime based both on the receiver type and the argument types
Java语言本身不支持Double Dispatch,通过Visitor Pattern
可以,但太复杂:这里通过反射实现
你也可以不使用BasePattern
,直接实现IIdentityResolver
:这是允许的
具体的BasePattern
实现类,必须使用Pattern
注解进行标注!
IMPORTANT: 子类的每个match
方法入参必须是IIdentity
,研发自己定义的类
℗Pattern(code = Patterns.Foo)
public class FooPattern extends BasePattern {
private boolean match(ShipmentOrder identity) {
return identity.isScenarioOf(new FromFoo());
}
private boolean match(CheckTask identity) {
return identity.getExtInfo("foo", Boolean.class);
}
private boolean match(Carton identity) {
return xxx;
}
}
public final boolean match(@NonNull @NonNull IIdentity identity)
IIdentityResolver
match
在接口中 IIdentityResolver<IIdentity>
identity
- 业务身份,业务特征Copyright © 2020–2023. All rights reserved.