如果不需要在getter,setter方法里定义约束,是否有必要生成getter,setter方法,直接定义变量公开可好
或者说getter,setter的好处还有哪些
您的每一个用心回答,都会让这个世界变得更美好一些!
和设计原理是有关的 好像是封闭开放原则 这块看看其他大佬咋说 get\set 方法都不是必须的 不过直接设置为公开变量的话 给定某个方法某些职能-单一职责原则 是为了保证数据安全
这是设计原理的文章 可以看看哈https://www.jianshu.com/p/a4092ab5844d
前面2个大佬说的对了。
你疑问是因为没遇到场景,我就随便说下。
比如你直接把某个属性设置public,只有有对象,都能随便更新你的属性。导致后过就是,大家都能更新,很方便,如果某天需求改动了,比如:setName(String name)需求是在名字之后加一个后缀。之前是属性直接更新,没有使用set,现在麻烦,所有用到属性地方都手动加后缀,这改动多大啊,风险大。如果你使用统一set方法,你只需要在set方法内部拼接 + 后缀。只需要一点点改动。而且对调用者无感知的。
get同理~
这是你的角度思考。如果开发的人不是你一个人,而是很多人。别人使用到你写的这个类,然后他想获取点什么东西,或者设置点什么东西,竟然没有。
至于为什么要提供,就是楼下说的了。什么东西开放,什么东西隐藏起来。如果你做SDK开发,做协议之类的你就知道了,把使用的人当傻子,越简单越好,把复杂的东西隐藏起来。
暴露所需要的字段就行了,不必要的字段可以不需要get或set方法,在某些特殊情况下,可以通过BeanUtils.copyProperties方法来设值
感谢各位大佬回答,大致是易于后期维护和添加需求,暴露特定的方法,隐藏内部实现,且使用setget有很好的语义化
和设计原理是有关的 好像是封闭开放原则 这块看看其他大佬咋说 get\set 方法都不是必须的 不过直接设置为公开变量的话 给定某个方法某些职能-单一职责原则 是为了保证数据安全
这是设计原理的文章 可以看看哈https://www.jianshu.com/p/a4092ab5844d
前面2个大佬说的对了。
你疑问是因为没遇到场景,我就随便说下。
比如你直接把某个属性设置public,只有有对象,都能随便更新你的属性。导致后过就是,大家都能更新,很方便,如果某天需求改动了,比如:setName(String name)需求是在名字之后加一个后缀。之前是属性直接更新,没有使用set,现在麻烦,所有用到属性地方都手动加后缀,这改动多大啊,风险大。如果你使用统一set方法,你只需要在set方法内部拼接 + 后缀。只需要一点点改动。而且对调用者无感知的。
get同理~
这是你的角度思考。如果开发的人不是你一个人,而是很多人。别人使用到你写的这个类,然后他想获取点什么东西,或者设置点什么东西,竟然没有。
至于为什么要提供,就是楼下说的了。什么东西开放,什么东西隐藏起来。如果你做SDK开发,做协议之类的你就知道了,把使用的人当傻子,越简单越好,把复杂的东西隐藏起来。
暴露所需要的字段就行了,不必要的字段可以不需要get或set方法,在某些特殊情况下,可以通过BeanUtils.copyProperties方法来设值
感谢各位大佬回答,大致是易于后期维护和添加需求,暴露特定的方法,隐藏内部实现,且使用setget有很好的语义化