我在内部串行终端应用程序中作为单个开发人员工作。我的目标是编写一个足够灵活的框架,以便我可以使用它来创建三个独立的应用程序:
在未来的某个时刻,我想将这三个应用程序合并为一个。但是,这远非优先考虑。
我已将框架分成三个独立的部分 - GUI(View接口),后端(Controller接口)和设置处理程序(ISettingsHandler接口)。但是,我已经遇到了一些循环依赖问题(ISettingsView必须被移动到与ISettingsHandler相同的命名空间),这表明未来会遇到更多麻烦。
我对每个申请的要求如下:
我是否让它变得比它应该更复杂?我知道我可以用更少的接口来完成同样的事情,但是我担心这个框架的灵活性以备将来使用。是否有适合这种情况的设计模式?
编辑:为了澄清,框架的三个“部分”中的每一个都在不同的名称空间中。
我已经修复了循环依赖,但是,我仍然不确定这是这个应用程序的最佳设计模式。有什么建议吗?
答案 0 :(得分:2)
其中一个设计原则是“好莱坞原则”,其中规定“你不打电话,我们会打电话给你”(来自Head first design patterns)
循环依赖是一个常见问题。为了避免它遵循这个原则。
不要在较低层中引用更高层的接口/类。较高层类应该使用较低层接口/类。
例如,ISettingsHandler应该引用IController而不是其他方式。即使您正在实施具体课程,也要遵循原则。
您的代码将更易于维护。
答案 1 :(得分:1)
如果遇到循环依赖关系,则需要将共享资源提取到另一个项目中(例如:将所有接口放入MyProject.Contracts项目中)。但是,如果您遵循正确的分层,则不应该遇到这些问题。
答案 2 :(得分:0)
在这里,您可以使用基于opon hollywood principale的接口依赖注入