深入教程
回顾博客模块
通过本教程,我们使用一个博客作为例子学习了如果使用增删改查功能。 在这个过程中,我们使用了几种不同的设计模式和最佳实践。 现在我们开始回顾下我们编写的这些代码,并以问答的形式作解答。
我们是否总是要在所有的场景中使用接口?
简单来说:不用。
详细说明:接口的重要性是随着你的应用变大而变得重要的。 如果你的应用将来会被别人使用或是可扩展的, 那么就需要考虑下编写并使用接口了。 这是一种基本的最佳实践方式和 Laminas 无关, 而是遵循了通用的面向对象的设计规范。
我们之前介绍的多层编程概念主要是将我们的应用做严格的分离。
将数据库操作放入控制器是非常诱人的,但是我们建议将其拆分为其他的对象, 并在必要的时候提供接口。 这样做的目的是将控制器从具体的实现中解耦, 从而在之后变更实现方式的时候无需更改控制器。 使用接口同时也方便测试,从而你可以很方便的提供 mock。
为什么这里需要如此多的控制器。
除了 ListController
外,我们还为每个路由都创建了一个控制器。
我们可以将其都放入一个控制器中,但是在实施中我们可能会发现如下几个问题:
- 控制器的复杂度不断增加,从而使得维护变得更加苦难。
- 依赖也随着功能的增加而不断增加。许多的方法可能只需要其中几个依赖, 从而造成了性能和资源的开销。
- 测试会变得比较困难。
- 重用也会不那么容易。
主要问题在于,这种控制器就打破了单一责任原则, 试图去解决所有的问题。
我们建议尽可能的在一个控制器中实现一个操作。
如果还有更多问题? PR them!
如果你还有其他问题,直接去官方论坛提问即可!
发现错误或者想为此文档做贡献? 来 GitHub 编辑!