V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ukipoi
V2EX  ›  问与答

请教一下一个业务功能是否需要在开始的时候就分到最细?这个是否和设计模式相关?( Java 、SpringMVC、SpringCloud)

  •  
  •   ukipoi · 2019-06-24 17:40:50 +08:00 · 845 次点击
    这是一个创建于 1990 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题 1
    一个需求,通过参数查表 A,再通过表 A 的字段查到表 B。(比如查购物车下选择的商品)假如这两个操作再同一个模块中,是不是应该在 Service 中先写出第一步,然后写出第二步,通过 Controller 调用第一步再调用第二步。(我不清楚第一步会不会被用到,但是如果不分开写以后要用到了就会写重复代码或者需要拆开原先写的方法。可如果一个需求都搞的这么细,那就会一个业务就多出很多很多的 service 方法,如何做取舍呢?或者有更好的模式?)

    问题 2
    需不需要多一个条件就新增一个接口,还是额外传入选项参数,我在方法内根据选项来执行某个条件的判断?然而我感觉不管哪种方式都不符合设计模式的原则。

    问题 3
    SpringCloud 中,各个模块应该怎样划分功能。比如 A 模块 和 B 模块 ,A 模块 可以查找 B 模块 下的一个表的所有数据,获取了所有数据之后他可以自己做一些筛选,那么做筛选的那部分,是不是应该放到 B 模块中而不是让 A 模块自己做(以后 C 模块也要 B 模块中的内容,但是筛选条件和 A 一样,是不是就造成了重复?)。到底该怎么区分 A 模块和 B 模块该做的内容和不该做的内容(让其他人来做的内容)?

    2 条回复    2019-06-24 18:08:24 +08:00
    troywinter
        1
    troywinter  
       2019-06-24 17:58:53 +08:00
    你说的这些问题是典型的 DDD 解决的问题,限界上下文和聚合根,如果之前没有了解过,可以了解一下。
    另外,问题 2 中不符合设计模式原则我有点懵逼,哪条原则?
    ukipoi
        2
    ukipoi  
    OP
       2019-06-24 18:08:24 +08:00
    @troywinter
    如果我开始对数据库表查找只做了一个字段传入,后来要添加一个字段筛选,是不是就要改原先的代码?
    需不需要在开始的时候就把 service 中根据某个属性差找内容全部都提供出去?在连接数据库的框架中,JPA 都帮你做好了,那 service 中呢?是遇到需要了添加还是一开始就全部写好?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5610 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 399ms · UTC 01:36 · PVG 09:36 · LAX 17:36 · JFK 20:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.