@Target(value=TYPE) @Retention(value=RUNTIME) @Documented @Inherited @Component public @interface Pattern
全局业务模式,串联面状业务变化,识别出业务模式需要全局(至少是多环节)地对业务变化进行本质性思考,这些不同变化都可以归因到某个业务模式
设计思想:模式的定义、模式的相关行为与实现分离,背后是关注点分离,隔离变化
一个请求可能涉及多个Pattern
的叠加,即业务身份重叠,例如:按生产单出库的校验,可能涉及【预售模式】、【质押模式】等的叠加,都允许才能出库
Pattern
与IDomainExtension
?
Pattern
,相当于把散落在各处的某个业务逻辑if
判断条件,收敛到Pattern
类里,使得这些业务判断显式化,有形化,有了化身,并有了个名字(UL)if
后面的code block抽象并归一化,是一种细粒度的行为Pattern
可能对应多个扩展点,即设计思想里的【模式的定义与模式相关行为分离】,例如:预售模式行为可能涉及出库前校验、接单补全、生产计划等Pattern
是InnerSource开发模式的有效手段:中台定义模式编码并通过Pattern
统一定义路由,中台与BP共同在一个共享代码库实现Pattern
对应的扩展点.
public abstract String code
public abstract String name
public abstract String[] tags
public abstract int priority
用于解决业务模式匹配的顺序问题
只应用于同一个扩展点在不同Pattern
间的顺序问题,不同的扩展点间优先级不具备可比性
public abstract boolean asResolver
Pattern
类是否用于解析和识别业务模式.
Pattern
特有的行为,不仅包括IDomainExtension
,还可能有:
对于这类非业务模式解析和识别应用场景,需要设置asResolver()
()}为false
.
Copyright © 2020–2023. All rights reserved.