【问题标题】:Where to put object specific logic在哪里放置对象特定的逻辑
【发布时间】:2018-01-24 19:08:42
【问题描述】:

我正在创建基于 PHP 框架 Laravel 和 MySQL 的应用程序。 我的站点模型中的记录不超过 100 条。

对于每个站点,我必须进行一些计算并获取值数组作为结果。问题是,由于站点的具体情况,每个站点都需要使用不同的输入值进行不同的计算。这导致不同站点的代码完全不同。

我的第一个教导是在 SiteController 中为每个站点创建函数并在需要时调用它,但这看起来很难看,并且会使控制器变胖。 请提出更好的方法来处理这个问题。

【问题讨论】:

  • 我觉得这应该在系统的设计阶段而不是在编码阶段考虑,还是我错了?
  • 必须在设计阶段考虑,但是这个功能是在系统运行后才请求的。

标签: php laravel


【解决方案1】:

将业务逻辑放入服务中。原因是您最终会尊重单一职责和关注点分离等原则。您的服务层将处理业务逻辑,而您的模型将处理数据库操作。

消息流:

Request -> Controller (action) -> Service > Model(s) ->
(back to) -> Service -> Controller -> View -> Response

More details

【讨论】:

  • 我同意,但是即使在Service中,这仍然意味着一个类中有几十个方法。
  • 不,因为服务是一个层而不是一个单一的类。在服务层中,您可以创建许多小型和专门的类,用于验证、映射、计算等......
猜你喜欢
  • 2012-08-18
  • 2011-09-08
  • 1970-01-01
  • 2011-12-16
  • 2011-06-03
  • 2011-08-02
  • 1970-01-01
  • 2014-03-16
  • 1970-01-01
相关资源
最近更新 更多