Dojo
最新
最佳
搜索
订阅
解道Jdon
架构设计
领域驱动
DDD介绍
DDD专辑
战略建模
领域语言UL
领域事件
商业分析
工作流BPM
规则引擎
架构师观点
数据工程
产品经理
系统思维
微服务
微服务介绍
微服务专辑
模块化设计
SOA
API设计
clean架构
SpringBoot
分布式事务
分布式架构
Kubernetes
DevOps
编程设计
GoF设计模式
模式专辑
面向对象
函数式编程
编程语言比较
编程工具比较
形式逻辑
前端编程
Reactive编程
Jdon框架
Rust语言
ChatGPT
Web3
模因梗
幽默梗
程序员吐槽
面试技巧
Java入门
数字化转型
认知偏差
道德经
GitHub工具
更多话题
开放封闭原则与规则引擎设计模式 - devgenius
22-02-10
banq
SOLID原则是美国软件工程师和讲师罗伯特·C·马丁 (Robert C Martin) 提倡的众多原则的一个子集,他被称为“鲍勃大叔”。在本文中,我将讨论S {O} LID原则之一,即开闭原则(OCP)。
我会使用 C# 来演示代码,但 OCP 与语言无关。
OCP的官方定义是:
软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。
OCP 的好处
OCP 推荐的做法可以轻松升级软件应用程序。想象一个 WhatsApp 想要扩展聊天服务以向 Facebook Messenger 发送消息的用例。
开发人员希望重用聊天服务的相关组件。有两种方法可以做到这一点。
修改现有聊天服务以支持新要求。它会将聊天服务代码暴露给错误。聊天服务的复杂性会增加,自动化测试用例可能会失败。
使用相关组件扩展聊天服务代码。为支持新功能而编写的代码将采用新类的形式,但将从聊天服务的核心功能中受益。这种方法的好处是可以独立部署和测试新功能。
规则引擎
设计模式
是遵守 OCP 的众多方法之一。许多其他设计模式允许我们遵循 OCP,但我将本次会议限制为规则引擎设计模式,这是展示 OCP 功能的最简单方法之一。
规则引擎
帮助开发人员遵循 OCP 的流行设计模式之一是规则引擎设计模式。开发具有处理同一实体的多个复杂业务规则的软件应用程序是一种有效的设计模式。
业务规则可能是相关的和复杂的。可能涉及很多复杂的分支和条件逻辑。遵循 OCP 将使开发人员能够独立添加、删除或禁用业务结果。
规则引擎有两个组件:
规则引擎 — 对实体执行所有规则以产生结果的引擎。
业务规则——规则定义处理逻辑或条件。
税务计算器
让我们尝试为税收计算器应用程序实现规则引擎设计模式。税收计算是一个复杂的过程,取决于许多因素,如年龄、总收入、居民身份等。许多业务规则评估这些因素以确定税额。政府政策推动了这些业务规则,并且可以经常更改它们。在这个用例中,我将使用规则引擎设计模式来保持这些业务规则的独立性。
完整的代码可以在
https://github.com/tarunbhatt9784/TaxCalculator.git
1
DDD战略设计与领域建模
SOLID原则
规则引擎
clean整洁架构