考虑到一个假设的情况,一个旧的、遗留的表示库多年来一直在维护,并且通过仓促更正和缺乏适当的架构监督的过程逐渐将越来越多的业务逻辑编码到其中。或者,考虑一个业务类或命名空间,它没有通过程序集边界与表示分离,因此能够引用 System.Windows.Forms 之类的东西而无需强制添加引用(比简单的 using 子句更清醒的操作) .
在这种情况下,这个 UI 代码使用的业务代码最终会被调用以进行重用并非不可想象。将两层分开以实现这一点的好方法是什么?
我对设计模式非常熟悉——至少在原则上是这样。但是,我没有大量的实践经验,所以我有点不确定自己的直觉。我已经开始为此使用策略模式。这个想法是识别业务逻辑调用 UI 组件以向用户提出问题并收集数据的位置,然后将它们封装到一组接口中。该接口上的每个方法都将包含来自原始工作流的面向 UI 的代码,然后 UI 类将实现该接口。
想要重用相关业务逻辑的新代码也将实现此接口,但替换新窗口或可能的预制或参数化答案来回答最初由 UI 组件回答的问题。这样,商务逻辑可以被视为一个真正的库,尽管传递给它的某些方法的接口参数有些尴尬。
这是一个体面的方法吗?我应该如何更好地解决这个问题?我将听从您的集体互联网智慧。
谢谢!