5
干净的体系结构:用例包含演示者或返回数据?
的清洁体系结构建议让交互器调用实际执行的演示者(其被注入时,DIP以下)的处理响应/显示的用例。但是,我看到人们实现了这种体系结构,从交互器返回输出数据,然后让控制器(在适配器层中)决定如何处理它。除了没有明确定义交互器的输入和输出端口之外,第二种解决方案是否将应用程序职责泄漏到应用程序层之外? 输入和输出端口 考虑到Clean Architecture的定义,尤其是描述控制器,用例交互器和演示者之间关系的小流程图,我不确定我是否正确理解“用例输出端口”应该是什么。 像六边形体系结构一样,干净的体系结构区分主要端口(方法)和次要端口(由适配器实现的接口)。按照通信流程,我希望“用例输入端口”是主要端口(因此只是一个方法),而“用例输出端口”是要实现的接口,也许是使用实际适配器的构造函数参数,以便交互器可以使用它。 代码示例 举例来说,这可能是控制器代码: Presenter presenter = new Presenter(); Repository repository = new Repository(); UseCase useCase = new UseCase(presenter, repository); useCase->doSomething(); 演示者界面: // Use Case Output Port interface Presenter { public void present(Data data); } 最后,交互器本身: class UseCase { private Repository repository; private Presenter presenter; public UseCase(Repository …