[今日疑问] Java Bean 是否还需要 getter setter(中国) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
brucefu
V2EX    Java

[今日疑问] Java Bean 是否还需要 getter setter(中国)

  •  
  •   brucefu 2020-03-01 22:31:35 +08:00 3875 次点击
    这是一个创建于 2139 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 目前的 getter setter 是否仅仅是为了迎合以前的规范、迎合各大框架的默认构造 bean 的方式
    • Spring 现在已经不在意一个 bean 有没有 getter setter 了
    • 现在 getter setter 都是默认生成的,而且就算有业务逻辑,也不敢写在其中,因为:
        li>1、其他人会忽略,没有人会在意这些摆砖一样的方法
      • 2、getter setter 方法名并不能够反映业务逻辑,所以要把业务逻辑封装到一个望名只意的方法里
    5 条回复    2020-03-06 23:13:19 +08:00
    lhx2008
        1
    lhx2008  
       2020-03-01 22:36:30 +08:00 via Android
    getter 是符合贫血模型的,简单的程序保留无妨。如果是真正的面向对象或者是说充血模型,那么无脑 getter 是破坏了面向对象的封装特性,不推荐。我不用 lombok
    chendy
        2
    chendy  
       2020-03-01 22:51:27 +08:00
    具体情况具体分析
    Spring 的 bean,目前除非特殊需求否则只留构造方法
    数据类的就一个`@Data`搞定,如果不方便直接加就自己写
    IMCA1024
        3
    IMCA1024  
       2020-03-02 09:39:51 +08:00
    弄一个 lombok
    直接一个 @Data 我也不考虑了
    passerbytiny
        4
    passerbytiny  
       2020-03-02 10:03:54 +08:00
    逐条回复:
    1、getter setter 不是规范,是封装面向对象编程基本元素的要求;各大框架从来也没用 getter setter 来构造 bean,而是用它们来做序列化 /反序列化。
    2、Spring 从来都没在意过 getter setter,setter 只是其推荐的其中一种注入方式;以及,直接在字段上注入的方式,并不是 Spring 推荐的注入方式。
    3、请参见第一条,getter setter 是用来做封装的,不是用来写业务逻辑的,因此它必定绝大多数情况下都保持默认即可;大多数人不用,不代表没有人不会用。

    因为是面向对象编程基本元素的要求,所以虽然已经众人烦了,但是没人敢让它消失。现在只能,先用 lombok 临时顶着。Lombok、C#“属性”都很好用,但是从来没有被 JCP 接纳过,以后被接纳的可能性也不太大(大概这种编译擦除的方式,争议性太大)。
    liliumss
        5
    liliumss  
       2020-03-06 23:13:19 +08:00
    @passerbytiny 意思是 getter setter 就是 oop 的基础之一,去掉就失去 oop 的意义了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5605 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 57ms UTC 02:44 PVG 10:44 LAX 18:44 JFK 21:44
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86