作为软件架构(以及 Visual Studio)的学习练习,我决定创建一组四个最小的 WPF/C# 应用程序(解决方案),其目的只有一个:按下按钮时从文件中读取一些圆形参数,并显示GUI上的结果:
- 一个应用程序从 .txt 文件中读取并在文本框中显示参数;
- 一个应用程序从 .xml 文件中读取并在画布中显示圆圈;
- 一个应用程序从 .txt 读取并显示圆圈;
- 一个应用程序从 .xml 读取并显示文本参数;
也就是说,我有一个包含 Circle 类的域项目、两个 DataAccess 项目(一个用于 xml,另一个用于 txt)和两个演示项目(一个用于几何绘图,另一个用于显示文本)。这四种解决方案中的每一种都指的是这些可重用的模块化项目的组合。
另外,我想使用 FAÇADE 设计模式,以便演示文稿“看到”外观,但看不到数据访问或域。Façade 看到了 Domain 和 DataAccess,而每个 DataAccess 只是盲目地做自己的事情。
问题是:
- 我需要两个 Façade,因为我必须为两个 DataAccess 层之一创建一个命名空间依赖项,以便在 Façade 项目中使用 DataAccess 命名空间。所以一个 Façade 依赖于 XmlBackend,另一个依赖于 TxtBackend;
- 每个 Presentation 都依赖于 Façade,因此命名空间可用,但是由于我有两个 Façade,每个 Presentation 项目最终都会依赖于两个不同的 Façade 项目,这是一件坏事;
我试图创建一个单一的 Façade 项目,以便每个 Presentation 都引用它,但是这个 Façade 将依赖于两个不同的 DataAccess 后端。然后在一个解决方案中,我不能只有一个 DataAccess 后端项目,因为 Façade 项目将依赖于两个不同的后端项目。
所以问题是:我如何解决这个问题,以便我可以有四个解决方案,每个解决方案只有必要的项目(域、外观、一个演示和一个数据后端),不违反分层架构,每个项目不需要对其他人了解太多?
更新:Msdn 库说以下内容,我认为这可能是一个提示:“[解决方案资源管理器允许您] 添加对解决方案中的多个项目或解决方案有用的项目,而无需引用每个项目中的项目。”
谢谢阅读!