首页/文章/ 详情

FEM之在求解器中使用设计模式(6)---Strategy模式

2年前浏览595

完成一项任务,往往可以有多种不同的方式,每一种方式称为一个策略,我们可以根据环境或者条件的不同选择不同的策略来完成该项任务。最常用的实现方式就是使用if else 语句,但是这种方式将所有使用模块放在了同级水平,造成修改和添加功能时候很容易破坏原有结构。

策略模式(Strategy Pattern):定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。

策略模式的优点:

1.由于策略类都实现同一个接口,所以使它们之间可以自由切换。

2.增加一个新的策略只需要添加一个具体的策略类即可,基本不需要改变原有的代码。

3.避免使用多重条件选择语句。

在求解器开发中,仍然以调用求解线性方程组库为例,前面介绍了多种线性方程组库,其本质都是求解大规模的Ax=b方程,我们可以在设计之初就使用策略模式,将调用各个库封装成单独的策略,这样在调用的时候就可以根据实际情况选择合适的求解库。不仅有利于开发,也有利于维护扩展和测试。

image.png

如上图所示,我们将MKL,Eigen,Blas调用封装成独立的strategy,统一参数调用接口Run()。再需要添加新的库时,按照该接口设计即可,在程序中调用新的库时,无需改动其它接口,保证了功能的独立,不会影响已有功能。

科普
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2022-06-04
最近编辑:2年前
多物理场仿真技术
www.cae-sim.com
获赞 126粉丝 322文章 220课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈