V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
cheava
V2EX  ›  问与答

Java 项目中的 service 分层和工程结构

  •  1
     
  •   cheava · Jul 5, 2018 · 3241 views
    This topic created in 2853 days ago, the information mentioned may be changed or developed.

    问下大家关于工程上的问题: service 层有没有必要分成接口和 impl ?

    (项目没有对外系统提供服务)

    我以前也是一直有分的,但是就以前项目来说,也确实感觉没有什么用处

    能举一些例子说明吗?可能做的项目不是很大型,所以没感觉

    15 replies    2018-07-06 08:41:19 +08:00
    zjp
        1
    zjp  
       Jul 5, 2018 via Android
    如果用到了动态代理就必须分接口和实现,其他的情况下没有强制的要求
    micean
        2
    micean  
       Jul 5, 2018
    一般情况用不上
    但也就 ctrl+左键 2 次的事
    所以我不喜欢
    cheava
        3
    cheava  
    OP
       Jul 5, 2018
    @zjp #1 我能想到的也就是,aop 和事务管理需要
    VoidChen
        4
    VoidChen  
       Jul 5, 2018
    除了以上,补充一个,为了找方法的时候好看一点(直接看接口)
    ddbullfrog
        5
    ddbullfrog  
       Jul 5, 2018
    One of the main interests of using Spring is AOP. This is the technology that allows Spring to add new behaviours on top of your Beans: for instance, this is how transactions or security work.

    In order to add those behaviours, Spring needs to create a proxy on your class, and there are two ways of creating a proxy:

    If your class uses an interface, Spring will use a standard mechanism provided by Java to create a dynamic proxy.

    If your class doesn ’ t use an interface, Spring will use CGLIB to generate a new class on the fly: this is not a standard Java mechanism, but it works as well as the standard mechanism.
    ioc
        6
    ioc  
       Jul 5, 2018 via Android
    @ddbullfrog 意思就是没差咯
    misaka19000
        7
    misaka19000  
       Jul 5, 2018
    感觉没有用处就不分
    Cbdy
        8
    Cbdy  
       Jul 5, 2018
    不分,需要的时候再分。从实现抽象出接口不是一条命令的事情吗?不要过度设计
    cheava
        9
    cheava  
    OP
       Jul 5, 2018
    @Cbdy #8 我们目前内部定的规范就是,外部调用定接口,内部调用省略接口
    JRay
        10
    JRay  
       Jul 5, 2018
    我也有过这种想法,一直没理解到接口和 impl 的用处在哪儿
    swim2sun
        11
    swim2sun  
       Jul 5, 2018
    直接写成 class,如果有多个实现再抽象成接口也不晚啊,Java 重构起来很方便
    Guozi1989
        12
    Guozi1989  
       Jul 5, 2018
    我这边是强制要求写接口,虽然我个人是及不愿意。逃~
    li1215101
        13
    li1215101  
       Jul 5, 2018
    小项目不分,大项目分,方便看代码,Java service 的逻辑有时候写得比较乱,对外接口和逻辑搞一起很难看懂
    tairan2006
        14
    tairan2006  
       Jul 5, 2018 via Android
    没啥球用,真有需要再重构
    nl101531
        15
    nl101531  
       Jul 6, 2018 via Android
    重构的时候就会发现很实用了。另外接口的目的是制定协议,比较复杂的 service 我这边都会分开,比如订单流程,每一个类型订单都会有一个具体的 impl,而上层对外只需要一个接口就好了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5672 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 114ms · UTC 08:58 · PVG 16:58 · LAX 01:58 · JFK 04:58
    ♥ Do have faith in what you're doing.