系统设计 | 领域模型中的拓展点设计
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
文章摘要
本文讨论了大型系统中领域模型的拓展性设计,特别是在面对多样化业务场景时如何通过拓展点和不变点来构建灵活且可扩展的模型。
业务场景复杂性
作者指出大型企业的业务系统需要支持多种场景,这些场景可能涉及售后工单、财务结算、外卖服务等不同领域,每个场景都有特有的字段和流程,但也存在相似之处。为应对这种复杂性,需要找到合理的抽象和拓展点。
拓展性的坐标理论
文章提出了“坐标”概念来描述拓展性,借鉴了数学中的坐标系,将拓展性分为三个维度:面向对象坐标、流程坐标和服务坐标。其中面向对象坐标侧重于属性和行为的抽象;流程坐标关注事件和时间维度的软件过程;服务坐标则涉及服务种类和数量的垂直和水平拓展。
领域模型中的拓展点与不变点
讨论重点放在如何在领域模型中设定拓展点和不变点。拓展点是根据场景差异化的字段和行为,而不变点是大部分场景下相同的部分。作者强调,识别和设计拓展点时,寻找不变点至关重要,因为这有助于稳定业务核心而允许其他部分变化。
案例分析
作者通过结算单和工单系统两个案例来说明如何设计领域模型的拓展点。结算单案例中,将结算单抽象为基本模型,通过增加拓展头、行模型和策略类来适应不同的结算场景。工单案例则展示了如何将工单流转作为不变点,把具体服务作为拓展点,以增强系统的灵活性。
总结
文章总结指出,拓展点设计的核心在于深刻理解业务,分离不变点和拓展点,这是大型系统架构设计不可或缺的一部分。同时,作者提出了一个思考题:拓展性设计是否仅仅是理论上的需要,还是实际项目中的必要之举。
想要了解更多内容?
白皮书上线