开闭原则如何决定接口实例选用?Clean Architecture相关实现咨询
问题解答
不需要新建Financial Report Controller的新实例。
按照Bob大叔在《Clean Architecture》里基于开闭原则给出的架构设计,Financial Report Controller依赖的是抽象的Presenter接口,而非Screen Presenter、Web Presenter这类具体的实现类。
要新增PDF格式展示数据,只需要做两件事:
- 实现一个符合抽象Presenter接口的
PDF Presenter类,把PDF需要的页眉、页脚排版和数据渲染逻辑都封装在里面 - 将这个
PDF Presenter实例注入到已有的Financial Report Controller中即可
这种设计完美契合开闭原则:扩展新的展示格式时,完全不用修改控制器的代码(对修改关闭),只需要新增对应的Presenter实现(对扩展开放)。控制器的职责仅负责获取数据,然后把数据交给抽象的Presenter处理展示,具体用什么格式展示,完全由不同的Presenter实例来决定。
内容的提问来源于stack exchange,提问作者rbansal
相关产品推荐
相关产品推荐

