结合两种服务 - 设计模式MVC

时间:2018-06-08 13:47:10

标签: oop design-patterns model-view-controller

我有一项服务可以阻止用户对ID执行操作,称为" LockingService",

我还有两件需要锁定的东西:

  1. (MembershipService)登录 - 如果用户尝试使用会员编号登录超过3次 - 会员编号被锁定。
  2. (OtherService)如果用户尝试输入无效凭据 - 其会话已被锁定。
  3. 该服务并没有区分这两者。

    描述的是控制器上当前存在的流程之一(用于登录):

    ---
    title: "Leaflet in ioslides"
    output: 
      ioslides_presentation
    ---
    
    ```{r setup, include=FALSE}
    knitr::opts_chunk$set(echo = TRUE)
    ```
    
    ## Leaflet
    ```{r, echo=F, message=F, warning=F}
    library(raster)
    library(leaflet)
    rwa_adm0 <- getData('GADM', country='RWA', level=0)
    rwa_adm1 <- getData('GADM', country='RWA', level=1)
    
    leaflet() %>%
      addProviderTiles("OpenStreetMap") %>%
       addPolygons(data=rwa_adm0, group="ADM 0") %>%
       addPolygons(data=rwa_adm0, group="ADM 1") %>%
        addLayersControl(overlayGroups = c("ADM 0", "ADM 1"),
        options = layersControlOptions(collapsed = FALSE))
    ```
    

    我相信这个逻辑流不应该存在于控制器中。

    非常感谢对一般性意见的建议 感谢。

1 个答案:

答案 0 :(得分:1)

你是对的 - 这不属于控制器,它属于服务。

你应该拥有那个具有业务逻辑的方法登录的UserService。

该服务可以使用其他服务,只需要它们并使用它们。控制器应该只处理输入/输出并调用正确的服务方法。